gpt4 book ai didi

python - 值列表时的离散积分

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:33 24 4
gpt4 key购买 nike

假设我有一个值列表:

a = [1, 2, 3, 4, 5]

我想生成一个新列表,它是原始列表的简单集成:

b = [1, 3, 6, 10, 15]

我想出了几种方法来做到这一点,但我不喜欢其中任何一种。我的第一个方法使用 for 循环:

b = [a[0]]
for index in xrange(1, len(a)):
b.append(b[index-1]+a[index])

但这感觉行太多了。我的第二种方法使用列表理解:

b = [sum(a[:x]) for x in xrange(1,len(a)+1)]

它的行数较少,但不会重复使用之前的求和。有没有一种有效的方法可以通过列表理解来执行此操作?

最佳答案

Is there an efficient way to do this operation with list comprehension?

不——当然不是没有以不可读的困惑代码结束。我建议您继续使用显式 for 循环,但它可能会被稍微清理一下:

>>> b = [a[0]]
>>> for item in a[1:]:
... b.append(b[-1] + item)
...
>>> b
[1, 3, 6, 10, 15]

注意python3.2引入了itertools.accumulate它在可迭代中完全满足您的需求...

>>> import itertools as it
>>> a = [1, 2, 3, 4, 5]
>>> list(it.accumulate(a))
[1, 3, 6, 10, 15]

关于python - 值列表时的离散积分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20364781/

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