参考链接(6楼的回答):
http://www.cnblogs.com/maodouzi/archive/2011/07/12/2104153.html
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 杨辉三角(看了很多,只有这个能够理解。)
def triangles(max):
n, a, li = 0, 0, [1]
# 开始循环,max为行数,执行次数=max
while n < max:
# 循环直接yield定义好的列表li,值为[1],因为第一行就是[1]。当n=1时,仅执行一次。
yield li
# 重点①:方便的列表定义模式,简便头尾的1的添加
# 重点②:python列表生成式—— 算式 for 变量 in 某个范围。可以方便的生成有规律的list内容
# 重点③:使用len(li)-1来规定②中生成器的执行次数,这样在max=2时,可以正常执行。超过后也不会有list范围超出的问题。
li = [1] + [li[n]+li[n+1] for n in range(len(li)-1)]+[1]
# n自增避免无限循环
n += 1
for x in triangles(6):
print (x)
#输出结果:
#[1]
#[1, 1]
#[1, 2, 1]
#[1, 3, 3, 1]
#[1, 4, 6, 4, 1]
#[1, 5, 10, 10, 5, 1]