生成器:
一边循环一边运算的机制,称为生成器,generator
创建生成器方法1
把列表生成式的[]改成()
l=[x for x in range(10)]
print(l)
l=(x for x in range(10))
print(l)
next(l)
可以通过next()函数获得生成器的下一个值
生成器保存的是算法,每次调用 next(l) ,就计算出 l 的下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出 StopIteration 的异常。一般用for遍历
创建生成器方法2:
def fib(times):
n = 0
a,b = 0,1
while n
yield b
a,b = b,a+b
n+=1
return 'done'
F = fib(5)
迭代器
迭代器是访问集合元素的一种方式,呆呆起是一个可以遍历的位置的对象,迭代对象从集合的第一个元素开始访问,知道所有的元素被访问结束,迭代器只能往前,不会后退
可以被next()函数调用并不断返回下一个值的对象称为迭代器:
�����܄�
可迭代对象
集合数据类型
generator
包括生成器和带yield的generator function
能直接用作于for循环的对象统称为可迭代对象.
判断是否可迭代用isinstance()判断
生成器不但可以被for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出Stoplteration异常
iter()函数
将可迭代对象转化为迭代器
总结
·凡是可作用于for循环的对象都是Iterable类型;
·凡是可作用于next()函数的对象都是Iterator类型
优点是节约内存