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

如何用Python按指定索引对列表值进行分段求和?

高效实现指定区间求和的方案

给定索引列表 indices = [13,28,59,69] 和数值列表 values,要计算你指定的四个区间和,前缀和数组是最简便高效的方法,完全不需要嵌套遍历,能避免重复计算同时大幅提升效率。

实现步骤

1. 构建前缀和数组

前缀和数组的核心是存储前i个元素的累加和,这样任意区间[a, b](包含两端)的和都可以通过prefix[b+1] - prefix[a]直接得到,边界处理更顺畅。

示例代码:

# 假设values是你的完整数值列表
values = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,...]

# 初始化前缀和数组,第一个元素为0(对应前0个元素的和)
prefix = [0]
for num in values:
    prefix.append(prefix[-1] + num)

用Python标准库可以更简洁:

from itertools import accumulate
prefix = [0] + list(accumulate(values))

2. 计算各区间和

根据你的需求,直接遍历索引列表就能依次算出每个目标区间的和:

indices = [13,28,59,69]
result = []

# 第一个区间:0到13的和
result.append(prefix[indices[0] + 1] - prefix[0])

# 后续区间:从上个索引+1到当前索引的和
for i in range(1, len(indices)):
    start = indices[i-1] + 1
    end = indices[i]
    result.append(prefix[end + 1] - prefix[start])

# 输出结果
print(result)

方案优势

  • 效率更高:预处理前缀和是O(n),计算区间和是O(k)(k是索引列表长度),远优于嵌套遍历的O(n*k),当values规模很大时差异会非常明显。
  • 逻辑清晰:没有复杂的嵌套结构,代码简洁易维护,不容易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:05:28