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

Python不使用numpy实现两个二维列表对应元素逐位相加的方法

纯Python实现二维矩阵对应元素相加

原代码问题说明

你当前使用+运算符对列表做操作的逻辑是列表拼接,仅会将两个二维列表的元素按顺序合并,不会处理对应位置的数值计算。

实现方案

基础嵌套循环版(易理解)

逐行逐列遍历两个矩阵的对应位置,相加后存入结果矩阵:

def add_matrices(list1, list2):
    rows = len(list1)
    cols = len(list1[0])
    result = []
    for i in range(rows):
        current_row = []
        for j in range(cols):
            current_row.append(list1[i][j] + list2[i][j])
        result.append(current_row)
    return result

简洁列表推导式版

结合zip函数配对对应行、对应列元素,用列表推导式简化代码:

def add_matrices(list1, list2):
    return [[a + b for a, b in zip(row1, row2)] for row1, row2 in zip(list1, list2)]

带输入校验的鲁棒版

增加尺寸校验逻辑,避免两个矩阵尺寸不一致时出现非预期结果:

def add_matrices(list1, list2):
    # 校验行数是否一致
    if len(list1) != len(list2):
        raise ValueError("两个输入矩阵的行数不相等")
    # 校验每一行的列数是否一致
    for row1, row2 in zip(list1, list2):
        if len(row1) != len(row2):
            raise ValueError("两个输入矩阵的对应行列数不相等")
    return [[a + b for a, b in zip(row1, row2)] for row1, row2 in zip(list1, list2)]

测试验证

使用你给出的示例输入测试:

list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
list2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(add_matrices(list1, list2))

输出结果为:

[[2, 4, 6], [8, 10, 12], [14, 16, 18]]

和预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:18:00