生成器(generator)在Python中是为了解决内存不足而提出的一种方法,例如,我们要创建一个包含10万个元素的列表,这个列表不仅占用很大的存储空间,而且如果我们只需要访问前面几个元素,后面元素占用的空间就白白浪费了.于是Python中给出一种一边循环一边计算的机制,这就是生成器.
创建生成器的方法(genterator)
1.只要把一个列表生成式的[]改成(),就创建了一个generator
L=[x*x for x in range(5)]
g=(x*x for x in range(5))
g就是一个生成器.打印生成器的每一个元素,如果要一个一个打印出来,可以通过next()函数获取generator的下一个返回值:
next(g)
使用for循环,因为generator是一个可迭代对象:
g=(x*x for x in range(5))
for n in g:
print(n)
2.在函数定义中包含yield关键字,这样该函数就不再是一个普通函数,而是一个generator:
def fib(max):
n,a,b=0,0,1
while n<max:
yield b
a,b=b,a+b
n=n+1
return 'done'
网友评论