矩阵乘法嵌套循环索引异常:scaledMatrix赋值错误排查
矩阵乘法代码的行引用问题修复
你的问题出在结果矩阵的初始化方式上:
scaledMatrix = [[0]*3]*n
这种写法会让scaledMatrix里的n个行全部指向同一个列表对象。也就是说,scaledMatrix[0]和scaledMatrix[1]其实是同一个[0,0,0]的引用,修改其中一行的元素,所有行都会跟着变——这就是为什么第一次迭代后,[0][0]和[1][0]同时变成了2。
修复方法
用列表推导式初始化结果矩阵,确保每一行都是独立的新列表:
scaledMatrix = [[0]*3 for _ in range(n)]
修正后的完整代码片段
# 正确初始化结果矩阵 scaledMatrix = [[0]*3 for _ in range(n)] for i in range(n): for j in range(3): sum_of_elements = 0 for k in range(n): sum_of_elements += coordinateMatrix[i][k]*otherMatrix[k][j] scaledMatrix[i][j] = sum_of_elements
这样修改后,每一行都是独立的,修改scaledMatrix[i][j]只会影响对应位置的元素,不会牵连其他行。
内容的提问来源于stack exchange,提问作者kiddo42069
相关产品推荐
相关产品推荐

