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

矩阵求和函数兼容判断问题求助:修复非匹配矩阵错误输出

问题分析与修复方案

你的代码问题出在仅验证了两个矩阵的行数相等,却没有检查每一行的列数是否完全匹配。比如你提到的测试用例:

  • M1是[[1, 2], [2, 3]](2行2列)
  • M2是[[4, 2, 1], [1, 2, 3]](2行3列)
    两者行数相同,但列数不匹配,按照要求应该返回空列表,但你的代码直接跳过了列数检查,强行对前两列求和,导致输出错误。另外,你代码里的while len(M1)==len(M2):完全是多余的,这里用if判断就足够了。

修复后的代码

def matrix_sum(M1, M2):
    # 第一步:检查行数是否相等
    if len(M1) != len(M2):
        return []
    # 第二步:检查每一行的列数是否都对应相等
    for row1, row2 in zip(M1, M2):
        if len(row1) != len(row2):
            return []
    # 第三步:行数和列数都兼容,执行矩阵求和
    res = []
    for i in range(len(M1)):
        row = []
        for j in range(len(M1[i])):
            row.append(M1[i][j] + M2[i][j])
        res.append(row)
    return res

代码解释

  1. 行数检查:首先判断两个矩阵的行数是否一致,不一致直接返回空列表。
  2. 列数检查:通过zip遍历每一对行,只要有任意一对行的长度(列数)不相等,就返回空列表。
  3. 矩阵求和:只有当行数和所有行的列数都匹配时,才执行逐元素相加的操作,返回正确的矩阵和。

测试你提到的用例:

print(matrix_sum([[1, 2], [2, 3]], [[4, 2, 1], [1, 2, 3]]))  # 输出 []
print(matrix_sum([[1,2,3],[4,5,6]], [[1,1,1],[1,1,1]]))  # 输出 [[2,3,4],[5,6,7]]

现在就能得到符合预期的结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:55:27