Метод .copy() создаёт новый список, в котором хранятся в точности те же ссылки. Это означает, что если в списке будет лежать другой список, то копия будет на него ссылаться:
a = [[1, 2], [3, 4]]
b = a.copy()
b[0][0] = 'ha'
b[0][1] = 'hi'
b[1] = 'ho'
print(b)  # -> [['ha', 'hi'], 'ho']
print(a)  # -> [['ha', 'hi'], [3, 4]]

Для того, чтобы создать «полноценную» копию, можно использовать функцию deepcopy из модуля copy:

from copy import deepcopy
a = [[1, 2], [3, 4]]
b = deepcopy(a)
b[0][0] = 'ha'
b[0][1] = 'hi'
b[1] = 'ho'
print(b)  # -> [['ha', 'hi'], 'ho']
print(a)  # -> [[1, 2], [3, 4]]
Последнее изменение: Суббота, 15 Август 2020, 02:35