Проблема с присвоением списков в python

_Rugnat_

Новичок
Пользователь
Окт 9, 2020
4
0
1
Очень интересную штуку в питоне нашел:
c = [1,3,2]
d = c
d.append(4)
c.append(5)
print(c,d)
если вывести этот код, то получатся два одинаковых списка [1,3,2,4,5], но при таком коде
с = [1,3,2]
d = list(c)
d.append(4)
c.append(5)
print(c,d)
выведется [1,3,2,4] и [1,3,2,5]
почему так странно работает оператор присваивания со списками? Хотел бы узнать ответ, заранее большое спасибо
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
проверьте на is и все станет ясно.

говоря, что b = c вы ссылаетесь на тот же объект, на который ссылается и c, а list(с) создает копию объекта, следовательно и ссылка другая, так что на самом деле во втором случае вы редактируете разные объекты
 

Форум IT Специалистов