【发布时间】:2014-05-24 17:18:55
【问题描述】:
我想为伯努利三角形构建一个生成器,三角形中j 行中的数字i 是j 行中帕斯卡三角形中第一个i 数字的部分和。
三角形看起来像这样:
这将在 python 中由列表表示:
[[1], [1,2], [1,3,4], [1,4,7,8]
我的生成器函数返回[1]作为第一个输出,这是正确的,但它总是返回[]!
这是我的代码:
def next_row(row):
n = len(row)
new_row = [row[0]] + [row[i] + row[i+1] for i in range(n - 1)] + [row[-1]]
return new_row
def generate_pascal():
row =[1]
while True:
yield row
row=next_row(row)
def generate_bernoulli():
row=next(generate_pascal())
n=len(row)
while True:
yield row
row=[row[0]+sum(row[0:i]) for i in range(n-1)]
【问题讨论】:
-
你说的一直是什么意思,你到底想要什么?
-
你永远不会在
generate_bernoulli中更新n。 -
您也只调用一次
generate_pascal。你想达到什么目的? -
pascal标签用于 Pascal 语言,而不是 Pascal 的三角形。使用前请阅读标签摘录。
标签: python list generator pascals-triangle