You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何计算列表前缀和,生成每一位为原列表前序元素总和的新列表

Python实现前缀和数组的常用方法

以下所有方法基于你给出的示例列表 A = [3,5,7,8,9,12,13,20] 测试,最终输出均为 [3, 8, 15, 23, 32, 44, 57, 77],符合你的预期。

  • 方法1:基础遍历累加(无额外依赖,兼容性最好)
    这是最容易理解的实现方式,不需要引入任何第三方库,所有Python版本都支持:
A = [3,5,7,8,9,12,13,20]
B = []
current_sum = 0
for num in A:
    current_sum += num
    B.append(current_sum)

时间复杂度为O(n),仅需要维护一个临时累加变量,性能优异。

  • 方法2:使用itertools.accumulate(标准库内置,写法最简洁)
    Python3.3及以上版本的标准库自带了累加迭代器,可以直接生成前缀和:
from itertools import accumulate
A = [3,5,7,8,9,12,13,20]
B = list(accumulate(A))

底层实现和手动循环逻辑一致,性能没有损失,代码可读性更高。

  • 方法3:使用numpy.cumsum(适合大规模数值数组)
    如果你处理的是长度很大的数值类列表,用numpy的内置方法性能会远高于纯Python实现:
import numpy as np
A = [3,5,7,8,9,12,13,20]
B = np.cumsum(A).tolist()

注意该方法需要提前安装numpy库,纯Python原生环境无法直接使用。

  • 方法4:列表推导式实现(仅适合短数组)
    如果只是临时处理长度很小的列表,可以用列表推导式快速实现:
A = [3,5,7,8,9,12,13,20]
B = [sum(A[:i+1]) for i in range(len(A))]

该方法时间复杂度为O(n²),列表长度超过100时性能会明显下降,不推荐长列表使用。

内容的提问来源于stack exchange,提问作者Newyen minh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:30:05