python之生成器generator
生成器
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
# Author: xueyou def fib(max): n,a,b = 0,0,1 while n < max: # print(b) yield b # 保存当前状态,然后返回,下次进来从这里开始 a,b = b,a+b # t(a,a+b) a=t(0) b=t(1) t是一个tuple n += 1 f = fib(10) # 生成器只有一种方法就是next ,正常的时候是不用的,平时使用for循环来进行 # print(f.__next__()) # print(f.__next__()) # print(f.__next__()) for i in range(6): print(f.__next__())
浙公网安备 33010602011771号