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

如何在Python中对同维度嵌套列表按对应位置求和?

嵌套列表对应位置求和的正确解法

你的问题出在误用了列表的+=操作——在Python中,列表的+=是拼接两个列表,而非对应位置元素相加,所以才会得到合并后的结果,而非求和结果。

解法1:嵌套循环(直观易懂)

先初始化结果结构,再逐层遍历每个元素位置,累加所有列表对应位置的数值:

# 示例输入
implemented_moves = [[[1,2], [3,4]], [[5,6], [7,8]]]

result = []
# 遍历每一行的索引
for row_idx in range(len(implemented_moves[0])):
    current_row = []
    # 遍历当前行的每个元素索引
    for elem_idx in range(len(implemented_moves[0][row_idx])):
        total = 0
        # 累加所有列表中对应位置的元素
        for lst in implemented_moves:
            total += lst[row_idx][elem_idx]
        current_row.append(total)
    result.append(current_row)

print(result)  # 输出: [[6, 8], [10, 12]]

解法2:列表推导式(简洁高效)

利用zip()函数将对应位置的元素打包,结合列表推导式实现一行式求和:

implemented_moves = [[[1,2], [3,4]], [[5,6], [7,8]]]

result = [
    [sum(elems) for elems in zip(*rows)]
    for rows in zip(*implemented_moves)
]

print(result)  # 输出: [[6, 8], [10, 12]]

解释:

  • zip(*implemented_moves):将外层的N个N行N列列表按行配对,示例中会得到([[1,2], [3,4]], [[5,6], [7,8]]),拆分为两组行对:([1,2], [5,6])和([3,4], [7,8])
  • zip(*rows):对每组行对,再按元素位置配对,比如([1,2], [5,6])会拆分为(1,5)和(2,6)
  • sum(elems):对每个位置的配对元素求和,最终组成结果列表

内容的提问来源于stack exchange,提问作者Ayman.1302

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:05:38