版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yangj507/article/details/81162805
用于记录知识点,有错误欢迎指正
列表生成式:
用于创建list
[x * x for x in range(1, 11)]
[x * x for x in range(1, 11) if x % 2 == 0]
[{m: n} for m in 'ABC' for n in 'XYZ']
生成器:
返回的可迭代对象
1、列表生成式[]换成()
L = [x * x for x in range(1, 11)]
g = (x * x for x in range(1, 11)) # 生成器:可迭代对象,每次运行获取下一个返回值,for循环
2、生成器函数
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
遇到yield语句返回值一个,再次执行时,从上次返回的yield语句处继续执行, for循环
for i in fib(6)
迭代器:
可以直接作用于for循环的对象统称为可迭代对象
可以被next()函数调用并不断返回下一个值的对象称为迭代器
生成器都是迭代器对象,但list、dict、str是可迭代对象,确不是迭代器。(为什么?迭代器对象是一个数据流,可以被next()函数不断的返回下一个数据,直到没有数据抛出错误。可以看作是有序的序列,但不知道序列长度。迭代器对象是惰性的,只有在需要返回下一个数据时它才会计算。而list永远不可能是无限的。不对请指出:惰性计算的序列都是迭代器)
可迭代对象可以通过 iter() 函数获得一个迭代器对象