def sj(): l=[1]
while True: yield l l=[1]+[l[i]+l[i+1] for i in range (len(l)-1)]+[1]
if name=='main': n=0 for x in sj(): print (x) n +=1 if n == 6: break
''' 第一行输出为L=[1]所以输出 [1] 第二行输出为L=[1][1] 因为中间的生成器不会工作,range(0)不生成任何数字 第三行输出为L=[1][2][1] 头尾是固定输出,中间的生成器工作range(1)生成n=0结果生成中间一个数字[2]=L[0]+L[1] 第四行输出L=[1][2][2][1] 头尾[1]仍然一致。这个时候中间生成器生成range(1)2个n,n=0和n=1。然后当n=0的时候仍然会生成[3]=l[0]+l[1]当n=1时,[2]=L[1]+L[1+1] 我也不知道我讲的明白不。。反正自己终于搞懂了,不过自己要运用的时候估计又不清楚了 '''
第4行是[1,3,3,1],然后L[1]+L[2]=[3]。程序没问题的
Sign in to make a reply
ColinShi2011
!/usr/bin/python
-- coding: UTF-8 --
def sj(): l=[1]
if name=='main': n=0 for x in sj(): print (x) n +=1 if n == 6: break
''' 第一行输出为L=[1]所以输出 [1] 第二行输出为L=[1][1] 因为中间的生成器不会工作,range(0)不生成任何数字 第三行输出为L=[1][2][1] 头尾是固定输出,中间的生成器工作range(1)生成n=0结果生成中间一个数字[2]=L[0]+L[1] 第四行输出L=[1][2][2][1] 头尾[1]仍然一致。这个时候中间生成器生成range(1)2个n,n=0和n=1。然后当n=0的时候仍然会生成[3]=l[0]+l[1]当n=1时,[2]=L[1]+L[1+1] 我也不知道我讲的明白不。。反正自己终于搞懂了,不过自己要运用的时候估计又不清楚了 '''