生成器:(Python中,这种一边循环一边计算的机制,称为生成器:generator)
创建generator的方法:
1.把列表生成式的[]变为(),就创建了一个generator
例:
可以通过next()获得generator得下一个返回值
遍历的话可以直接用:
for i in g:
print(i)
2.将函数中的print(b)改为yield b,如果一个函数定义中包含
yield
关键字,那么这个函数就不再是一个普通函数,而是一个generator杨辉三角,期待输出效果:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
代码:
def triangles(max):
n,l = 0,[]
while n <max:
a=0
k=[]
for i in l:
k.append(a+i)
a=i
k.append(1)
print(k)
l=k
n = n+1
if __name__=="__main__":
triangles(5)
生成器方式
def triangles(max):
n,l = 0,[]
while n <max:
a=0
k=[]
for i in l:
k.append(a+i)
a=i
k.append(1)
yield k
l=k
n = n+1
if __name__=="__main__":
for t in triangles(5):
print(t)
n,l = 0,[]
while n <max:
a=0
k=[]
for i in l:
k.append(a+i)
a=i
k.append(1)
yield k
l=k
n = n+1
if __name__=="__main__":
for t in triangles(5):
print(t)