对于斐波那契数列:
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield b
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()
运行结果:
我的理解是:
生成器就相当于一个容器,或者具体来说就像是一个队列,将yield后面的变量(b)一个一个存储起来,然后最后函数返回一个迭代器。(f = fibonacci(10)就是说接收一个含有十个b的集合)
那迭代器就相当于用一个指针,指向里面的元素,并将里面的元素逐一输出。
更简单的斐波那契数列的实现:
a,b = 0,1
while(b < 1000):
a,b = b,a+b
print(a,end = " ")
看到这里,不禁感叹:人生苦短,我用python!哈哈