1
我想複製一個矩陣,以便更改副本中的值不會更改原始值。我明白爲什麼以下是不正確的:在Python中複製矩陣
matrix1 = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix2 = matrix1
matrix2[0][0] = 9
matrix2 # [[9, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix1 # [[9, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix2 is matrix1 # True
我原來的做法是這樣的:
matrix1 = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix2 = matrix1[:][:]
matrix2[0][0] = 9
matrix2 # [[9, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix1 # [[9, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix2 is matrix1 # False
在第二個代碼片段,matrix1
和matrix2
不引用同一個對象。 爲什麼呢,做matrix2
的變化仍然影響matrix1
?我的理解是,如果它們是單獨的對象,那麼更改一個不會改變另一個,這就是爲什麼切片符號適用於一維數組的原因。
'matrix1 [:] [:]'只是複製副本。它不會複製子列表。 – user2357112
在範圍內(len(矩陣1))]''嘗試'[matrix1 [k]是矩陣2 [k]。 –
爲了進一步解釋它,它使淺副本的一個**淺**副本(意味着每行中的項目仍然是相同的項目,因爲它是二維的)。請參閱:https://docs.python.org/2/tutorial/introduction.html#lists – alfasin