Python进阶教程,生成器、迭代器一文掌握( 三 )


g=(i for i in range(1,11))print(g)使用 yield构建斐波那契数列
def fei(n):num1,num2=0,1weizhi=0while weizhi < n :num=num1num1,num2=num2,num1+num2weizhi += 1yield numprint(list(fei(10)))唤醒生成器:send( )、next( )、 __next__( )
send( )ret=fei(10)a=ret.send(None)print(a)next( )ret=fei(10)while True:try:print(next(ret))except StopIteration:break生成器和迭代器之间的区别【Python进阶教程,生成器、迭代器一文掌握】在使用生成器时 , 我们创建一个函数;在使用迭代器时 , 我们使用内置函数iter()和next() 。在生成器中 , 我们使用关键字‘yield’来每次生成/返回一个对象 。生成器中有多少‘yield’语句 , 你可以自定义 。每次‘yield’暂停循环时 , 生成器会保存本地变量的状态 。 而迭代器并不会使用局部变量 , 它只需要一个可迭代对象进行迭代 。使用类可以实现你自己的迭代器 , 但无法实现生成器 。生成器运行速度快 , 语法简洁 , 更简单 。迭代器更能节约内存 。