生成器 (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)