很多同学还是对生成器的用法,感到怀疑,特别是有其他语言基础的同学,一下子很难理解和转换过来,那什么情况下会用到yield,建议是当需要在循环过程中依次处理一个序列中的元素的时候,就应该考虑生成器,其实yield是非常巧妙而且很高效,一旦用习惯了就会事半功倍.
下面举几个简单的例子,让大家轻松理解生成器的妙用
一.九九乘法表
1.九九乘法表应该是耳熟能详的,我们用这个做第一个例子
def table_9_9(max=9):
n=1
while n<=max:
N=['{}*{}={}'.format(i,n,n*i) for i in range(1,n+1)]
n+=1
print N
table_9_9()
打印输出一下:
2.这样只能打印,不能保存,而且上面还会有一个None(仔细看上面图的最下方)如果想保存状态,需要额外的加一个列表来保存
比如这样:
def table_9_9(max=9):
n=1
L=[]
while n<=max:
N=['{}*{}={}'.format(i,n,n*i) for i in range(1,n+1)]
n+=1
L.append(N)
return L
T=table_9_9()
for t in T: