我在嵌套循环中遇到矩阵运算问题。在发布这个问题之前我查看了stackoverflow,我发现所有的主题只处理了一个矩阵。
我的循环尝试计算两个矩阵,第一个中的每个元素为2,第二个中的每个元素为1。但是,相同的矩阵作为输出。
我试图在每个循环中复制一个矩阵,但是给出了相同的错误结果。
感谢您的帮助!
dummy_matrix = [[0 for x in range(2)] for x in range(2)]
other_matrix = dummy_matrix
for x in range(2):
for i in range(2):
dummy_matrix[x][i] = 2
other_matrix[x][i] = 1
print 'dummy_matrix =',dummy_matrix
print 'other_matrix =',other_matrix
The answer is
dummy_matrix = [[1, 1], [1, 1]] # expected result : [[2, 2], [2, 2]]
other_matrix = [[1, 1], [1, 1]]
答案 0 :(得分:3)
写作时
other_matrix = dummy_matrix
您要求Python将名称other_matrix
绑定到dummy_matrix
绑定的同一对象。所以
dummy_matrix[x][i] = 2
other_matrix[x][i] = 1 # overwrites the previous value
只做
other_matrix = [[0 for x in range(2)] for x in range(2)]
代替。
答案 1 :(得分:2)
问题出在这一行
other_matrix = dummy_matrix
您没有使用此行创建dummy_matrix
的副本,但是您other_matrix
也指向dummy_matrix
也指向的同一列表。要实际创建副本,您可以使用像这样的切片表示法
other_matrix = dummy_matrix[:]