gpt4 book ai didi

python - 获取列表部分的相应总和

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

我有一个列表 [0, 1, 2, 3, 4, 5, 6] 并对它的各个部分求和,以便:

l = [0, 1, 2, 3, 4, 5, 6] -> 21

l = [1, 2, 3, 4, 5, 6] -> 21

l = [2, 3, 4, 5, 6] -> 20

l = [3, 4, 5, 6] -> 18

l = [4, 5, 6] -> 15

l = [5, 6] -> 11

l = [6] -> 6

l = [] -> 0

因此,我得到了列表各部分的相应总和:[21, 21, 20, 18, 15, 11, 6, 0]

我使用的代码是:

[sum(l[i:]) for i in range(len(l) + 1)]

但是,对于范围大于 100000 的列表,代码会显着变慢。

知道为什么以及如何优化它吗?

最佳答案

我建议为此使用 itertools.accumulate(我 recallnp.cumsum 更快),通过一些列表反转以获得您想要的输出:

>>> from itertools import accumulate
>>> lst = [0, 1, 2, 3, 4, 5, 6]
>>> list(accumulate(reversed(lst)))[::-1]
[21, 21, 20, 18, 15, 11, 6]

(如果需要,您可以在末尾添加0)

关于python - 获取列表部分的相应总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56645826/

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