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

如何用原生Python高效简洁地对表格部分列求和(避免冗余计算)

解决方案

以下几种原生Python实现方式,既简洁又能避免遍历所有列的冗余计算:

1. 列表推导式 + zip(最简洁)

利用zip(*A)将二维列表按列分组,直接截取前n列并求和:

A = [[1, 2, 3], [4, 5, 6]]
n = 2
B = [sum(col) for col in zip(*A)[:n]]
# 输出: [5, 7]
  • 原理:zip(*A)会把每一行的对应元素打包成元组(即按列聚合),[:n]只取前n列,完全避免处理后续列的冗余计算。
  • 优点:代码简洁直观,可读性强,适合大多数常规场景。

2. 生成器切片(大数据量优化)

如果二维列表的列数非常多,用itertools.islice直接从列迭代器中取前n个元素,避免生成完整的列列表占用内存:

from itertools import islice

A = [[1, 2, 3], [4, 5, 6]]
n = 2
B = [sum(col) for col in islice(zip(*A), n)]
# 输出: [5, 7]
  • 原理:zip(*A)返回的是迭代器,islice直接在迭代器上截取前n项,不会额外存储所有列数据,更适合大规模数据集。

3. 手动累加(极致性能)

如果追求最高执行效率,尤其是当n较小时,手动初始化结果列表并逐行累加前n列元素:

A = [[1, 2, 3], [4, 5, 6]]
n = 2
B = [0] * n
for row in A:
    for i in range(n):
        B[i] += row[i]
# 输出: [5, 7]
  • 原理:直接操作结果列表的索引,避免了zip带来的轻微开销,内存占用极低。

边界处理提示

如果不确定n是否超过二维列表的实际列数,可以先做一次取值限制:

n = min(n, len(A[0]))  # 确保n不超过实际列数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:17:20