生成器定义
在Python中,这种一边循环一边计算的机制,称为生成器:generator。
创建一个generator最简单的一种方法莫过于把一个列表生成式的[]改成(),就创建了一个generator:
generatorA=(x * x for x in range(5))
怎么打印出generator的每一个元素呢?
#获取下一个生成器的值
next(generatorA)
生成器实例----斐波拉契数列
除第一个和第二个数外,任意一个数都可由前两个数相加得到:
1, 1, 2, 3, 5, 8, 13, 21, 34, …
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'```
## 迭代器的定义
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
## 迭代器和生成器联系
生成器都是迭代器对象。
凡是可作用于for循环的对象都是Iterable类型;
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。