Python - 嵌套for循环中两个不同矩阵的错误结果

时间:2013-11-22 10:40:46

标签: python for-loop matrix nested

我在嵌套循环中遇到矩阵运算问题。在发布这个问题之前我查看了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]]

2 个答案:

答案 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[:]