生成器 (generator)
#生成器generator 在Python中,这种一边循环一边计算的机制,称为生成器,能节省大量的空间
L=[x*x for x in range ( 1 , 11 )]
g=(x*x for x in range ( 1 , 11 )) #创建L和g的区别仅在于最外层的[]和(),L是一个list,而g是一个generator
next (g) #如果要一个一个打印出来,可以通过next()函数获得generator的下一个返回值
for n in g: #用for循环,generator也是可迭代对象
print (n)
#举例:斐波那契数列(Fibonacci)除第一个和第二个数外,任意一个数都可由前两个数相加得到
#1, 1, 2, 3, 5, 8, 13, 21, 34, ...
def fib(max): #fib函数是定义了斐波拉契数列的推算规则
n,a,b= 0 , 0 , 1
while n<max:
print (b)
a,b=b,a+b
n=n+ 1
return 'done'
#如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator
def fib(max): #fib函数是定义了斐波拉契数列的推算规则
n,a,b= 0 , 0 , 1
while n<max:
yield b
a,b=b,a+b
n=n+ 1
for x in fib( 7 ):
print (x)