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
版权:保留所有解释权。转发请注明出处。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步