2024-06-15 15:43:53 发布
网友
我想为Bernoulli三角形建立一个生成器,三角形中j线上的i是第j行中pascal三角形中第一个i数的部分和。在
j
i
三角形如下:
在python中用列表表示:
[[1], [1,2], [1,3,4], [1,4,7,8]
我的generator函数返回[1]作为第一个输出,这是正确的,但是它总是返回[]!在
[1]
[]
这是我的准则:
首先,只调用next一次,而不是每次迭代都调用它。第二,每次迭代都不会更新行。此外,您的部分和与yield是互换的。我通过将对next的调用放在while循环中,并在其外部初始化pascal生成器来修复这些问题。最后,你的数目有点少,我也修正了。正确代码如下:
next
yield
pascal
def generate_bernoulli(): pascal = generate_pascal() while True: row=next(pascal) n=len(row) row=[sum(row[0:i+1]) for i in range(n)] yield row
你需要计算帕斯卡三角形行的部分和。下面是我如何编写代码。在
def partial_sums(xs): s = 0 for x in xs: s += x yield s def generate_bernoulli(): for row in generate_pascal(): yield list(partial_sums(row))
首先,只调用
next
一次,而不是每次迭代都调用它。第二,每次迭代都不会更新行。此外,您的部分和与yield
是互换的。我通过将对next
的调用放在while循环中,并在其外部初始化pascal
生成器来修复这些问题。最后,你的数目有点少,我也修正了。正确代码如下:你需要计算帕斯卡三角形行的部分和。下面是我如何编写代码。在
相关问题 更多 >
编程相关推荐