Все истории

👯 Скопировал список, изменил копию — а поменялся оригинал. Как так?

Копия публикации из архива канала. Дата и текст сохранены.

(Python)

Очень частая ловушка в Python:
first = [1, 2, 3]
second = first

second.append(4)

print(first)

Ожидаешь:
[1, 2, 3]

А получаешь:
[1, 2, 3, 4]

Python ничего не сломал 😄

Проблема в строке:
second = first
Она не создаёт новый список.

Теперь first и second — это два имени, которые указывают на один и тот же объект в памяти.
Поэтому меняешь second → меняется и то, что видно через first.

Чтобы создать отдельную копию, можно сделать так:
second = first.copy()
или:
second = list(first)

Тогда изменения уже не затронут оригинал.

📌 Но есть нюанс: .copy() делает поверхностную копию. Если внутри списка лежат другие списки, там снова могут начаться сюрпризы.

Главное правило для новичка:
= не копирует объект. Он просто даёт ему ещё одно имя.

И вот после этого половина странных багов со списками внезапно становится понятнее.