(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() делает поверхностную копию. Если внутри списка лежат другие списки, там снова могут начаться сюрпризы.
Главное правило для новичка:
= не копирует объект. Он просто даёт ему ещё одно имя.
И вот после этого половина странных багов со списками внезапно становится понятнее.