Я плохо пытаюсь выяснить, что здесь происходит, с помощью следующего мелкого списка.
В этом коде после модификации мелкой копии списка (matrix2), где мы заменить весь список в списке, изменения отражаются только для матрицы2, но не для матрицы1, хотя матрица2 является поверхностной копией матрицы1.
>>> matrix1 = [[1, 2], [3, 4]]
>>> matrix2 = matrix1[:]
>>> matrix2[0] = [5, 6]
>>> matrix2
[[5, 6], [3, 4]]
>>> matrix1
[[1, 2], [3, 4]]
В этой части кода результат отличается, поскольку изменение значение в одном списке списка отражается для обеих матриц.
>>> matrix2[1][0] = 1
>>> matrix2
[[5, 6], [1, 4]]
>>> matrix1
[[1, 2], [1, 4]]
Я обнаружил следующее: Это происходит потому, что список на самом деле не содержит сами объекты, но ссылки на эти объекты в памяти. Когда вы создаете копию списка, используя обозначение [:]
, возвращается новый список, содержащий те же ссылки, что и исходный список.
Можете ли вы помочь мне выяснить, что на самом деле означает приведенный выше текст? может, я что-то здесь упускаю и сам не могу найти ответ.