定义:按照某种算法,边循环边计算推算出一个列表中的所有元素;
优点:受内存限制,列表容量是有限的,通过生成器,可以不断按算法推算出后续的元素,而不是把list的所有元素储存在内存中,从而实现内存的节约;
创建一个生成器:
1、把列表生成式[ ] 改成()
例:
上面代码中l的类型是一个list,而g是一个generator;我们可以直接通过print(l)打印出列表中的所有元素,但要打印generator类型的可以通过next( )函数来获得下一个返回值,但generator也是一个可迭代对象,是可迭代对象就可以通过for循环来遍历。
当然基于复杂的推算,用列表生成式无法实现可以用函数来实现,定义generator的另一种方式:一个函数中包含yield关键字,那么这个函数就不在是一个普通函数,它是一个generator,如下图所示:
上图中函数func( )与func_y( )唯一的不同就是func( )函数中的print(a)变成了func_y( )中的yield a,func_y( )是一个生成器,那么就是一个可迭代对象,可以通过for来循环print(i)。所以在python中,可以很简单的把列表生成式的[ ]改成( )来改成generator,也可以通过更改函数中yield关键字来实现定义一个generator。
原文:https://www.cnblogs.com/fujinjie/p/13418656.html