В Python переменные, которые хранят списки, на самом деле содержат ссылки на объекты в памяти, а не сами объекты. Поэтому, когда вы приравниваете второй список к первому, вы на самом деле создаете новую ссылку на тот же самый объект в памяти.
Когда вы изменяете элементы второго списка, вы фактически изменяете тот же самый объект в памяти, на который указывают обе ссылки (то есть первый и второй список). Поэтому изменения отражаются и в первом списке.
Простым примером может быть следующий код:
list1 = [1, 2, 3] list2 = list1 list2[0] = 4 print(list1) # Output: [4, 2, 3]
Как видно из кода, когда мы изменяем элемент второго списка (list2[0] = 4
), элемент первого списка также изменяется, потому что обе переменные list1
и list2
ссылаются на один и тот же объект в памяти. Это свойство называется "передачей по ссылке" (pass-by-reference).
Чтобы создать новую копию списка, вы можете использовать метод copy()
или срез [:]
:
list1 = [1, 2, 3] list2 = list1.copy() # или list2 = list1[:] list2[0] = 4 print(list1) # Output: [1, 2, 3]
В этом случае list1
и list2
будут указывать на разные объекты в памяти, поэтому изменение list2
не повлияет на list1
. Это свойство называется "передачей по значению" (pass-by-value).