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

Python实现两个3x3矩阵求和函数结果异常原因咨询

3x3矩阵求和赋值全列表同步修改问题原因

核心问题原因

问题出在结果矩阵的初始化写法:

sum_of_a_b = [[0] * 3] * 3

Python中用*对列表做乘法复制时,如果被复制的元素是可变对象(比如列表),复制的是对象的内存引用,而不是创建全新的独立对象。这行代码执行后,sum_of_a_b里的3个子列表本质是同一个列表对象的3个别名,指向同一块内存地址,修改任意一个子列表的元素,所有子列表的对应位置都会同步变化。

你可以用简单代码验证这个逻辑:

test = [[0]*3]*3
test[0][0] = 99
print(test)
# 输出结果为 [[99, 0, 0], [99, 0, 0], [99, 0, 0]]

和你遇到的现象完全一致。

修复方案

改用列表推导式初始化结果矩阵,确保每个子列表都是独立的新对象:

sum_of_a_b = [[0 for _ in range(3)] for _ in range(3)]

也可以直接在循环计算时生成新矩阵:

sum_of_a_b = []
for i in range(3):
    row = []
    for j in range(3):
        row.append(matrix_a[i][j] + matrix_b[i][j])
    sum_of_a_b.append(row)

修改后再执行赋值操作,就只会修改指定i,j位置的元素,不会影响其他子列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:18:02