lst1 = []
n = 15 #代表打印15行的杨辉三角
for i in range(1,n+1):
row = [1] * i #一次开辟出每行元素的占位符号,此处使用1是因为杨辉三角头尾都是1元素
for x in range(0,i-2):
mid = i // 2
if x < mid : #从杨辉三角可以看出,每行只需算前半段即可(中间数属于特例另外算即可),后半段可以不用算
rel = pre[x] + pre[x+1]
row[x+1] = rel
row[-x-2] = rel #利用列表的负索引即可把前半段的计算结果赋予后半段
if x == mid: #中间数在此处进行特例计算
rel = pre[x] + pre[x+1]
row[x+1] = rel
else:
lst1.append(row)
pre = row
else:
print(lst1)
运行结果:
[[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], [1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1], [1, 11, 55, 165, 330, 462, 462