马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
自己新手写不出来也就算了,关键看都看不懂,越来越怀疑自己智商了,唉
代码:
def triangel(n):
L=[1] #定义一个list[1]
while True:
yield L #打印出该list
L=[L[x]+L[x+1] for x in range(len(L)-1)] #计算下一行中间的值(除去两边的1)
L.insert(0,1) #在开头插入1
L.append(1) #在结尾添加1
if len(L)>10: #仅输出10行
break
#生成一个generator对象,然后通过for循环迭代输出每一行
a=triangel(10)
for i in a:
print(i)
结果
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
关键代码哪个高手能解释透彻一点,小白能懂的……万分感激
本帖最后由 jerryxjr1220 于 2017-5-9 23:03 编辑
这样写,你看得懂吗?如果这个能看懂,那上面的应该也能懂,逻辑是一样的,只是用了列表推导式。
- L = [[0] * (i + 1) for i in range(10)]
- L[0][0] = 1
- for row in range(1, 10):
- for col in range(row + 1):
- if col == 0 or col == row:
- L[row][col] = 1
- else:
- L[row][col] = L[row - 1][col - 1] + L[row - 1][col]
- print(L)
复制代码
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15, 6, 1], [1, 7, 21, 35, 35, 21, 7, 1], [1, 8, 28, 56, 70, 56, 28, 8, 1], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]]
|