Discuss / Python / 这个杨辉三角我终于想明白了。

这个杨辉三角我终于想明白了。

Topic source

ColinShi2011

#1 Created at ... [Delete] [Delete and Lock User]

!/usr/bin/python

-- coding: UTF-8 --

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]。程序没问题的


  • 1

Reply