Почему в результате изменения второго списка меняется также и первый, если перед этим я приравнял второй список к первому?

В 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).