python生成器的理解
这里写代码片
"""生成器只有在调用时才会生成相应的数据,这种方式不同于列表生成器,列表只要设定,它的数据就已经生成"""
'''生成器的一个next函数只能一个一个打印数字,注意是一个一个按顺序,而不能倒退回去'''
'''生成器的格式如下'''
#生成器的第一种简便方式
c=(i*2 for i in range(10)) #这个生成器有一个__next__()函数
print(c.__next__())
print(c.__next__())#这种形式的生成器一次只能调用一个数据,这样可以极大的节省内存空间
#生成器的第二种方式:以函数方式制作一个生成器,以费波那契数列为例子,当然前提是你得知道费波那契数列的原理
(1)
`def fib(max):
n,a,b=0,0,1
while n<max:
print(b)#只需要将此处的print改为yield即可
a,b=b,a+b #这个地方类似一个元组(a,a+b)
n=n+1
return 'done'
fib(100)
(2)
def fib(max):
n,a,b=0,0,1
while n<max:
yield b#这样就通过函数的方式生成了一个生成器
a,b=b,a+b #这个地方类似一个元组(a,a+b)
n=n+1
return 'done'
fib=fib(100)
print(fib.__next__())
print(fib.__next__())#通过这种方式可以间断调取生成器里边的值,第一种不能间断调取