刚开始学python,在廖雪峰大神的python教程里做到了杨辉三角的题目,在python在没有数组的概念,但有和数组相似的list。
以下代码为本人在教程下方的评论区截取”@其实我姓谢“同学的。
写下此博客方便回顾。具体实现代码如下:
def triangles():
L = [1]
while True:
yield L
L.append(0)
L = [L[i-1]+L[i] for i in range(len(L))]
n=0
a = input("请输入杨辉三角的行数:")
for t in triangles():
print(t)
n = n+1
if n == int(a):
break
简单的部分就不说了。我们主要看generator的这一部分。
因为range(x)得出的是0到x-1的数,所以上文中的L[i-1]的必然会有L[-1]和L[1]相加的结果。L[1]开头必然是1的,而L[-1]则是最后一项,此时我们就应该明白前一行的append(0)的用意了,他使每次打印的结尾都变成了1(0+1)的结局。接下来就是其他[i-1]项和[i]项打印输出就结束了。
本文仅个人理解,如有错误望各位包涵