1. 杨辉三角
杨辉三角,是二项式系数在三角形中的一种几何排列。下一行的每一个元素都等于本行相邻两元素相加而得到。
2. 实现方法
将本行拷贝两个副本,将这两个副本分别在前后各补上一个 0,然后将这两个副本相加即可得到下一行数据。lines 表示要显示的行数。
def triangles(lines):
line = [1]
for _ in range(lines):
yield line
line = [sum(i) for i in zip([0] + line, line + [0])]
for line in triangles(10):
print(line)
结果如下:
[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]
3. 总结
将当前行拷贝两个副本,用 zip 将这两个副本相对应的位置放在一个元组列表里面,然后用列表生成式循环该列表,同时对循环出来的元组求和,得到的列表就是下一行的值
这里还用到了生成器,作用是每调用一次,返回下一行数据,下一行的数据是慢慢生成了。