0
Мой код:Python 3.4 Что это за список?
L = [1, 2, 3, 4]
L2 = L
L2[2] = 'a'
L
это дает мне:
[1, 2, 'a', 4]
может кто-нибудь объяснить мне, пожалуйста, когда я работал с L2, почему L изменились?
Мой код:Python 3.4 Что это за список?
L = [1, 2, 3, 4]
L2 = L
L2[2] = 'a'
L
это дает мне:
[1, 2, 'a', 4]
может кто-нибудь объяснить мне, пожалуйста, когда я работал с L2, почему L изменились?
L
и L2
обратитесь к той же ячейке памяти.
Выполните следующий пример того, как скопировать переменную списка в другую переменную.
>> x = [1,2,3]
>>> id(x)
141910924
>>> y = x
>>> id(y)
141910924
>>> z = list(x)
>>> id(z)
141676844
>>> x.append(10)
>>> x
[1, 2, 3, 10]
>>> y
[1, 2, 3, 10]
>>> z
[1, 2, 3]
использовать copy и deepcopy, когда мы хотим присвоить значения списка другим переменным, например.
>>> import copy
>>> x = [1,2,3, [4,5]]
>>> y = copy.copy(x)
>>> id(x)
141913324
>>> id(y)
139369964
>>> x.append(10)
>>> x
[1, 2, 3, [4, 5], 10]
>>> y
[1, 2, 3, [4, 5]]
>>> x[3].append(20)
>>> x
[1, 2, 3, [4, 5, 20], 10]
>>> y
[1, 2, 3, [4, 5, 20]]
>>> z = copy.deepcopy(x)
>>> z
[1, 2, 3, [4, 5, 20], 10]
>>> x[3].append(50)
>>> x
[1, 2, 3, [4, 5, 20, 50], 10]
>>> z
[1, 2, 3, [4, 5, 20], 10]
Потому что вы не сделали копию списка. –
'L2' и' L' оба имеют одинаковый список; вы просто связываете это с двумя переменными. – khelwood