标签:列表 end print logs ext div break [] 数列
什么是生成器
如果一个函数里面使用了yeild关键字,那么,这个函数就是一个生成器。
生成器是一种推导逻辑,调用生成器返回迭代器。
生成器的创建方法
# 改列表推导式[]为()
l = [2*x for x in range(3)]
print(l) # [0, 2, 4]
g = (2*x for x in range(3))
print(next(g)) # 0
print(next(g)) # 2
print(next(g)) # 4
print(next(g)) # StopIteration异常
使用带有yeild关键字的函数
def f():
print(‘step 1‘)
yield 1
print(‘step 2‘)
yield 2
print(‘step 3‘)
yield 3
g = f()
print(next(g)) # step 1 1
print(next(g)) # step 2 2
print(next(g)) # step 3 3
print(next(g)) # StopIteration 异常
斐波那契数列,除了前两项,后面的一项是前面两项的和
def fib(n):
a, b, counter = 0, 1, 0
while True:
if counter > n:
break
a, b = b, a + b
# print(a, end=‘ ‘)
yield a
counter += 1
g = fib(10)
for x in g:
print(x,end=‘ ‘)
# 1 1 2 3 5 8 13 21 34 55 89
标签:列表 end print logs ext div break [] 数列
原文地址:http://www.cnblogs.com/lcgsmile/p/7652130.html