【学习记录】Python3版本(3:基本语句记录(1))
2020-03-01 本文已影响0人
天有三光
列表生成式
L=[x for x in range(2,11)]
生成L列表,从2,3,4...10
L1=[x*x if x>0 else -x for x in L0]
生成L1列表,其值取L0列表元素的绝对值,原本为正数的数据进行平方
其选择语句部分可以看成可看成:
if x>0:
x*x
else:
-x
L2=[x for x in L if x%2==0]
生成L2列表,其值取L列表中的偶数集
生成器generator
由于上面那玩意派生出来的东西。
特征与函数一样,但是改为yield可以将程序“暂停”在某处,以供下次继续进行。
def fib(max):
n,a,b=0,0,1
while n<max:
yield b
a,b=b,a+b
n=n+1
return 'done'
调用时,一般用for函数,
>>>for n in fib(6):
>>> print(n)
>>>next(fib(6))
>>>出现Stop错误。
生成器的好处在于,当函数满足一定数学规律时,可以不使用列表等进行存储,而可以在每次使用时生成“列表”。
与数列表达式与数列的关系相似,当我不想写完数列是怎么样的时候,我可以使用数列表达式来对数列进行概括。
并且在我需要时,可以随时找到数列的对应值而不需使用如随机数表的方式去存储数列的序列。
同时,生成器由于其函数性质,又不仅可以表示数列表达式类型的列表,也可以表达如{'a','aa','aaa'}等等。总结起来,大概是以时间(程序运行时间以及你的思考时间)换取空间的做法。
迭代器iterator
迭代器包含生成器以及可迭代对象的迭代转化【如】iter([1,2])
特征是可以使用next函数。
可迭代对象iterable
集合数据:list、tuple、dict、set、str......
generator:生成器以及带yield的generator函数