gpt4 book ai didi

python - 列表的累积乘积

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:35 25 4
gpt4 key购买 nike

我已经实现了一个包含一定数量的所有质数的列表。我想做的事情很难解释,所以我将用一些硬代码来展示它:

euclst = []
euclst.append((primelst[0]) + 1)
euclst.append((primelst[0] * primelst[1]) + 1)
euclst.append((primelst[0] * primelst[1] * primelst[2]) + 1)
....

所以本质上,我试图从我的 prev 列表中按顺序取出一个元素,然后按指数方式将它相乘,然后将它附加到我的其他列表。

我意识到我可以这样做,这可能更容易:

euclst = []
euclst.append(primelst[0])
euclst.append(primelst[0] * primelst[1])
euclst.append(primelst[0] * primelst[1] * primelst[2])
....
#then add one to each element in the list later

我需要一些想法来在某种循环中执行此操作。

最佳答案

您想要一个累积产品的列表。这是一个简单的食谱:

>>> primelist =  [2, 3, 5, 7, 11, 13, 17, 19, 23]
>>> euclist = []
>>> current = 1
>>> for p in primelist:
... current *= p
... euclist.append(current)
...
>>> euclist
[2, 6, 30, 210, 2310, 30030, 510510, 9699690, 223092870]
>>>

另一种方式,使用 itertools:

>>> import itertools
>>> import operator
>>> list(itertools.accumulate(primelist, operator.mul))
[2, 6, 30, 210, 2310, 30030, 510510, 9699690, 223092870]
>>>

或者,也许这就是你的意思:

>>> [x + 1 for x in itertools.accumulate(primelist, operator.mul)]
[3, 7, 31, 211, 2311, 30031, 510511, 9699691, 223092871]

使用等效的 for 循环:

>>> euclist = []
>>> current = 1
>>> for p in primelist:
... current = current*p
... euclist.append(current + 1)
...
>>> euclist
[3, 7, 31, 211, 2311, 30031, 510511, 9699691, 223092871]
>>>

关于python - 列表的累积乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41784149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com