杨辉三角,把每一行看做一个list,试写一个generator,不断输出下一行的list
分析:
1) 第一行为1,其余每行首尾都是1
2) 第二行首尾为1
3) 从第三行开始,中间的值由上一行相邻元素相加得到,首尾是1
可以把第一行作为初始list,2)和3)合并成下列步骤(最外层循环,while循环):
– 初始化一个空串,添加第一个元素1
– 如果此时行数为3或以上,中间的元素通过上一个list计算(内层循环,for循环)
– 给该行list添加最后一个元素1,将当前行list更新给参考list供下一行计算
代码实现:
# -*- coding: utf-8 -*-
def triangles():
s=[1]
yield s
while 1:
s_new = []
s_new.append(1)
for n in range(len(s)-1):
s_new.append(s[n]+s[n+1])
s_new.append(1)
yield s_new
s = s_new
return 'done'