11.初探python之生成器

#列表生成式
a = [x for x in range(10)]
print(a)

def f(n):
return n**3
b = [f(x) for x in range(10)]
print(b)
#生成器
#创建方法1
s = (x*2 for x in range(10))
#print(next(s))#一次只能调用一个,按顺序调用 next(s)==s.__next__()
for i in s:
print(i)
#创建方法2 yield
def gen():
print('ok1')
yield 1 #返回1
print('ok2')
yield 2
g=gen()
next(g)
next(g)
#斐波那契数列
def fib(max):
n,before,after = 0,0,1
while n < max:
yield before
before,after = after,before+after
n = n+1
a = fib(10)
for i in a:
print(i)
#send
def bar():
count = yield 1
print(count)
b = bar()
b.send(None) #b.send(None)==next(b),send方法第一次需要传入None,后面的传入值会传給yield前面的变量
b.send('aaa')
posted @ 2018-09-11 15:37  zhoupeng_L  阅读(125)  评论(0)    收藏  举报