python生成器实现杨辉三角
花了几乎半小时,写出了一个关于计算杨辉三角的函数,然而对答案时,又发现活到老,学到老。
没错,triangles()
函数是我写的,而triangles1()
则是另一位网友写的。
我说一下我写的函数里我踩的坑:
要想复制列表L为R后,L和R各自修改互不影响,就得这样复制R = L[:]
。否则:
>>> L = [1,2,3,4,5]
>>> R=L
>>> L.append(6)
>>> L
[1, 2, 3, 4, 5, 6]
>>> R
[1, 2, 3, 4, 5, 6]
>>> R.append(0)
>>> R
[1, 2, 3, 4, 5, 6, 0]
>>> L
[1, 2, 3, 4, 5, 6, 0]
这里是代码:
def triangles():
n = 3
yield [1]
yield [1,1]
L = [1,1]
while True:
R = L[:]
L = []
for i in range(n):
if (i < n-1) and (i > 0):
L.append(R[i]+R[i-1])
else:
L.append(1)
yield L
n += 1
def triangles1():
L=[1]
yield L
while True:
L=[1]+[L[x]+L[x+1] for x in range(len(L)-1)]+[1]
yield L
n=0
for t in triangles1():
print(t)
n = n + 1
if n == 20:
break
版权:保留所有解释权。转发请注明出处。