惰性计算的序列
打开APP
Python 的惰性求值与惰性序列 翻译
东师小镇
关注
惰性求值
在编程语言理论中,惰性求值(英语:Lazy Evaluation),又译为惰性计算、懒惰求值,也称为传需求调用(call-by-need),是一个计算机编程中的一个概念,它的目的是要最小化计算机要做的工作.它有两个相关而又有区别的含意,可以表示为"延迟求值"和"最小化求值".
避免不必要的计算,带来性能的提升(最小化求值).
对于Python中的条件表达式 if x and y,在x为false的情况下y表达式的值将不再计算.而对于if x or y,当x的值为true的时候将直接返回,不再计算y的值.所以呢编程中可以利用该特性,在 and逻辑中,将小概率发生的条件放在前面或者在or逻辑中,将大概率发生的时间放在前面,有助于性能的提升.
延迟求值特别用于函数式编程语言中.在使用延迟求值的时候,表达式不在它被绑定到变量之后就立即求值,而是在该值被取用的时候求值.延迟求值的一个好处是能够建立可计算的无限列表而没有妨碍计算的无限循环或大小问题.例如,可以建立生成无限斐波那契数列表的函数(经常叫做"流").第n个斐波那契数的计算仅是从这个无限列表上提取出这个元素,它只要求计算这个列表的前n个成员.
惰性序列
Python的惰性序列多数指 iterator,其特点正如同上文所述,具有惰性计算特点的序列称为惰性序列.
Python的iterator是一个惰性序列,意思是表达式和变量绑定后不会立即进行求值,而是当你用到其中某些元素的时候才去求某元素对的值. 惰性是指,你不主动去遍历它,就不会计算其中元素的值.
一句话理解:
迭代器的一个优点就是它不要求你事先准备好整个迭代过程中所有的元素.
迭代器仅仅在迭代至某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁.
这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件,或是斐波那契数列等等.
Lambda函数、Map函数、Filter函数、Zip函数、Reduce函数.
Lambda函数是Python中功能最强大的函数之一,它有时也被称之为匿名函数..Map是程序员用来简化程序的Python内置函数,此函数可以在不使用任何循环的情况下对所有指定的元素进行迭代.Filter是Python中的另一个内置函数,当需要区分其他类型的数据时,这个函数非常有用.Filter函数经常用于根据特定过滤条件来提取数据.
内置函数就是Python给你提供的,拿来直接用的函数,比如print.,input等.
(1)列表和元组
frozenset 创建一个冻结的集合,冻结的集合不能进行添加和删除操作.
语法:sorted(Iterable, key=函数(排序规则), reverse=False)
语法:fiter(function. Iterable)
function: 用来筛选的函数. 在?lter中会自动的把iterable中的元素传递给function. 然后根据function返回的True或者False来判断是否保留留此项数据 , Iterable: 可迭代对象
搜索公众号顶级架构师后台回复"面试",送你一份惊喜礼包.
语法 : map(function, iterable)
可以对可迭代对象中的每一个元素进行映射. 分别去执行 function
randint是random + integer拼接简写而成,代表随机一个整数
Python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等.
random.randint() 函数的例子:
用于生成一个指定范围内的整数.其中参数a是下限,参数b是上限,生成的随机数n:a=n=b
a必须小于或等于b,否则报错.
其他random的方法:
无
随机数是用于生成测试入参的好办法,也常见于各种需要随机的场合.
但是每次随机带来的不确定性也会造成某些验证功能的困难,所以呢可以使用random.seed()通过指定随机的种子值保证每次生成随机数是同一序列的伪随机数.观察下面的输出:
对基础运行环境有疑问的,推荐参考: python函数深入浅出 0.基础篇
eval() 函数用来执行一个字符串表达式,并返回表达式的值.
eval函数功能:将字符串str当成有效的表达式来求值并返回计算结果.eval函数可以实现list、dict、tuple与str之间的转化.
eval() 使用时用到的参数:expression -- 表达式.globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象.locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象.
python中如何将对象输出到标准输出流:
print函数是你学Python接触到的第一个函数,它将对象输出到标准输出流,可将任意多个对象打印出来,函数的具体定义:objects 是可变参数,所以你可以同时将任意多个对象打印出来.默认使用空格分隔每个对象,通过指定sep参数可以使用逗号分隔.
对象默认输出的是标准输出流,你也可以将内容保存到文件中.
以上就是土嘎嘎小编为大家整理的正压流函数Python相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!