标签:取值 电视剧 nbsp class 斐波那契数 ret bre pre 数列
可以用next()方法依次取值的对象称为迭代器。
生成器是迭代器。
列表不是迭代器,列表是可迭代对象,列表可以通过iter(list)转化为迭代器。
一、生成器
1、定义
x = [1,2,3,4]
y = (i for i in x)
print(type(y))
for a in y:
print(a)
def foo(n):
while True:
n += 1
yield n
f = foo(5)
print(type(f))
2、生成器生成斐波那契数列
def foo(length):
a,b = 0,1
n =0
while n < length:
# print(b)
yield b
a,b = b,a+b
n += 1
return ‘没有更多元素了‘
g = foo(10)
for i in g:
print(i)
3、生成器send方法
def foo():
i = 0
while i < 3:
tmp = yield i
print(‘tmp:‘,tmp)
i += 1
g = foo()
n1 = g.send(None)
print(n1)
n2 = g.send(2)
print(n2)
n3 = g.send(3)
print(n3)
4、生成器之简单协程
def task1(n):
for i in range(n):
print(‘正在听第{}首歌‘.format(n))
yield None
def task2(n):
for i in range(n):
print(‘正在看第{}集电视剧‘.format(n))
yield None
t1 = task1(5)
t2 = task2(5)
while True:
try:
t1.__next__()
t2.__next__()
except:
break
标签:取值 电视剧 nbsp class 斐波那契数 ret bre pre 数列
原文地址:https://www.cnblogs.com/kuangfengnulang/p/14715476.html