标签:取值 电视剧 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