Python не выполняет присваивания.
Это имя привязки.
Есть разница, и она чудесно и подробно объясняется здесь .
В вашем первом примере:
Ваша первая строка связывает имя «test» с объектом списка, созданным выражением «[1,2]».
Ваша вторая строка связывает имя «test2» с тем же объектом , который ограничен «test».
Ваша третья строка изменяет объект, связанный с «test2», который совпадает с объектом, связанным с «test».
В вашем втором примере:
Ваша первая строка связывает имя «test» с объектом списка, созданным выражением «[1,2]».
Ваша вторая строка связывает имя «test2» с тем же объектом , который ограничен «test».
Ваша третья строка связывает имя «test2» с новым объектом, созданным выражением «[test2 [0] -1, test2 1 ]".
Если вы действительно хотите, чтобы два независимых списка с одинаковыми значениями были связаны с разными переменными, вам необходимо:
>>> test = [1, 2]
>>> test2 = list(test)
>>> test2[0] = 3
>>> print(test)
[1, 2]
>>> print(test2)
[3, 2]
Обратите внимание, что это список с мелким копированием, поэтому изменение состояния объекта элемента в test2
, конечно, повлияет на test
, если тот же объект найден в этом списке.
p.s. Python. Полуприцепы колоны. Некрасиво. Ненужные. Не использовать.