十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站建设、做网站、绵阳网络推广、小程序设计、绵阳网络营销、绵阳企业策划、绵阳品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供绵阳建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
惰性计算的序列
打开APP
Python 的惰性求值与惰性序列 翻译
2018-07-23 14:57:48
2点赞
东师小镇
码龄5年
关注
惰性求值
在编程语言理论中,惰性求值(英语:Lazy Evaluation),又译为惰性计算、懒惰求值,也称为传需求调用(call-by-need),是一个计算机编程中的一个概念,它的目的是要最小化计算机要做的工作。它有两个相关而又有区别的含意,可以表示为“延迟求值”和“最小化求值”。
避免不必要的计算,带来性能的提升(最小化求值)。
对于Python中的条件表达式 if x and y,在x为false的情况下y表达式的值将不再计算。而对于if x or y,当x的值为true的时候将直接返回,不再计算y的值。因此编程中可以利用该特性,在 and逻辑中,将小概率发生的条件放在前面或者在or逻辑中,将大概率发生的时间放在前面,有助于性能的提升。
2. 节省空间,使得无线循环的数据结构成为可能(延迟求值)。
延迟求值特别用于函数式编程语言中。在使用延迟求值的时候,表达式不在它被绑定到变量之后就立即求值,而是在该值被取用的时候求值。延迟求值的一个好处是能够建立可计算的无限列表而没有妨碍计算的无限循环或大小问题。例如,可以建立生成无限斐波那契数列表的函数(经常叫做“流”)。第n个斐波那契数的计算仅是从这个无限列表上提取出这个元素,它只要求计算这个列表的前n个成员。
惰性序列
Python的惰性序列多数指 iterator,其特点正如同上文所述,具有惰性计算特点的序列称为惰性序列。
Python的iterator是一个惰性序列,意思是表达式和变量绑定后不会立即进行求值,而是当你用到其中某些元素的时候才去求某元素对的值。 惰性是指,你不主动去遍历它,就不会计算其中元素的值。
一句话理解:
迭代器的一个优点就是它不要求你事先准备好整个迭代过程中所有的元素。
迭代器仅仅在迭代至某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。
这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件,或是斐波那契数列等等。
有。python软件中,是可以使用transpower函数的,Python由荷兰数学和计算机科学研究学会的GuidovanRossum于1990年代初设计,作为一门叫做ABC语言的替代品。
Lambda函数、Map函数、Filter函数、Zip函数、Reduce函数。
Lambda函数是Python中功能最强大的函数之一,它有时也被称之为匿名函数.。Map是程序员用来简化程序的Python内置函数,此函数可以在不使用任何循环的情况下对所有指定的元素进行迭代。Filter是Python中的另一个内置函数,当需要区分其他类型的数据时,这个函数非常有用。Filter函数经常用于根据特定过滤条件来提取数据。
Python(英国发音:/paθn/美国发音:/paθn/)是一种广泛使用的解释型、高级和通用的编程语言。Python支持多种编程范型,包括函数式、指令式、结构化、面向对象和反射式编程。它拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本身拥有一个巨大而广泛的标准库。
内置函数就是Python给你提供的,拿来直接用的函数,比如print.,input等。
截止到python版本3.6.2 ,python一共提供了68个内置函数,具体如下
本文将这68个内置函数综合整理为12大类,正在学习Python基础的读者一定不要错过,建议收藏学习!
(1)列表和元组
(2)相关内置函数
(3)字符串
frozenset 创建一个冻结的集合,冻结的集合不能进行添加和删除操作。
语法:sorted(Iterable, key=函数(排序规则), reverse=False)
语法:fiter(function. Iterable)
function: 用来筛选的函数. 在filter中会自动的把iterable中的元素传递给function. 然后根据function返回的True或者False来判断是否保留留此项数据 , Iterable: 可迭代对象
搜索公众号顶级架构师后台回复“面试”,送你一份惊喜礼包。
语法 : map(function, iterable)
可以对可迭代对象中的每一个元素进行映射. 分别去执行 function
hash : 获取到对象的哈希值(int, str, bool, tuple). hash算法:(1) 目的是唯一性 (2) dict 查找效率非常高, hash表.用空间换的时间 比较耗费内存
random() 函数命名来源于英文单词random(随机)。
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参数可以使用逗号分隔。
对象默认输出的是标准输出流,你也可以将内容保存到文件中。