生成器:(Python中,这种一边循环一边计算的机制,称为生成器:generator)
创建generator的方法:
1.把列表生成式的[]变为(),就创建了一个generator
例:
![](https://images0.cnblogs.com/blog2015/626983/201508/141818304107030.png)
![](file:///C:/Users/min.sun/AppData/Local/Temp/enhtmlclip/Image(16).png)
可以通过next()获得generator得下一个返回值
![](https://images0.cnblogs.com/blog2015/626983/201508/141818461608818.png)
![](file:///C:/Users/min.sun/AppData/Local/Temp/enhtmlclip/Image(17).png)
遍历的话可以直接用:
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)