- generator init
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
print("----------------------------------------------")
print("#列表生成式")
L = [2 * x for x in range(6)]
print(L)
print("#列表生成式的[]改成(),就创建了一个generator")
G = (2 * x for x in range(6))
print(G)
print(next(G))
print(next(G))
for n in G:
print(n,end=" ")
print("#要把fib函数变成generator,只需要把print(b)改为yield b就可以了")
for n in fib(6):
print(n, end=" ")
import sys
print("")
f = fib(6) # f 是一个迭代器,由生成器返回生成
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()
#运行结果:
----------------------------------------------
#列表生成式
[0, 2, 4, 6, 8, 10]
#列表生成式的[]改成(),就创建了一个generator
<generator object <genexpr> at 0x0000024F09BC17C8>
0
2
4 6 8 10 #要把fib函数变成generator,只需要把print(b)改为yield b就可以了
1 1 2 3 5 8
1 1 2 3 5 8