MiddleДебаггингИногдаЕщё не отвечали
Почему изменение поверхностной копии меняет оригинал?
Копия делается до изменения, но оригинал тоже меняется.
import copy
original = [[1, 2], [3, 4]]
shallow = copy.copy(original)
shallow[0].append(99)
print(original)
Найдите и исправьте ошибку.
copy.copy поверхностна: внешний список новый, но внутренние списки — общие ссылки, поэтому изменение shallow[0] меняет и original → [[1, 2, 99], [3, 4]]. Решение: использовать copy.deepcopy(original) для полностью независимых вложенных данных.
- ✗Думать, что
copy.copyглубоко копирует вложенные структуры - ✗Считать, что срез
[:]делает внутренние списки независимыми - ✗Не использовать
copy.deepcopyдля вложенных данных
- →Когда поверхностная копия действительно предпочтительнее глубокой?
- →Как
copy.deepcopyобрабатывает структуру со ссылочным циклом?