Курс Python → Копирование объектов в Python

Модуль copy в Python предоставляет возможность создания копий объектов, что особенно полезно при работе с изменяемыми коллекциями или коллекциями, содержащими изменяемые элементы. При обычном присваивании объекта переменной создается лишь ссылка на этот объект, что может привести к нежелательным изменениям в оригинальном объекте. Для избежания подобных проблем используется копирование объектов с помощью модуля copy.

Существует два типа копирования объектов с использованием модуля copy: поверхностное и глубокое. Поверхностное копирование создает новый объект, но ссылается на те же объекты, что и оригинал. Глубокое копирование, в свою очередь, создает копию объекта, а также копии всех объектов, на которые он ссылается.

Для выполнения поверхностного копирования объектов используется функция copy.copy(), а для глубокого копирования — функция copy.deepcopy(). При глубоком копировании все объекты, на которые ссылается оригинал, также рекурсивно копируются, что обеспечивает полную изоляцию копии от оригинала.


import copy

original_list = [1, 2, [3, 4]]
shallow_copy = copy.copy(original_list)
deep_copy = copy.deepcopy(original_list)

original_list[2][0] = 5

print(original_list)  # [1, 2, [5, 4]]
print(shallow_copy)   # [1, 2, [5, 4]]
print(deep_copy)      # [1, 2, [3, 4]]

В приведенном выше примере мы создаем оригинальный список original_list, затем создаем поверхностную копию shallow_copy и глубокую копию deep_copy. После изменения элемента вложенного списка в оригинальном списке, видим, что это изменение отразилось на поверхностной копии, но не на глубокой копии.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Разделение строки с помощью re.split()
  2. Срезы в Numpy
  3. Применение функции к списку
  4. Роль object и type в Python
  5. Многопроцессорное программирование в Python
  6. Генератор чисел Фибоначчи
  7. Модуль sys: основы
  8. Сохранение Unicode в JSON
  9. Частичное совпадение ввода
  10. Работа с датой и временем в Python
  11. Отступы в Python
  12. Сортировка с помощью key
  13. Определение функций с необязательными аргументами
  14. Проверка ввода с помощью isdigit
  15. Нахождение самого длинного слова в списке с помощью max
  16. Логирование с Loguru
  17. Проверка существования переменной с оператором :=
  18. Выборка чисел
  19. Многоточие в Python
  20. Виртуальные среды в Python
  21. lru_cache оптимизация функций
  22. Разделение строки на пары ключ-значение.
  23. Область видимости переменных
  24. Локальные переменные.
  25. Сортировка списка по индексам
  26. Измерение времени выполнения кода с использованием time
  27. Создание и использование модулей в Python
  28. Метод Enumerate() для списков
  29. Инверсия списков и строк в Python
  30. Обработка ошибок в Python
  31. Создание списка дат
  32. Класс Counter() для подсчета элементов
  33. Документация функции help() в Python
  34. Список переменных в Python
  35. Копирование объектов в Python
  36. Основные функции и модули Python
  37. Загрузка постов Instagram
  38. Метод __ixor__ для побитового исключающего ИЛИ
  39. Многострочные комментарии в Python
  40. Аргументы *args и **kwargs
  41. Numpy: разбиение массивов
  42. Python: изменяемые и неизменяемые коллекции
  43. Блок else в обработке исключений
  44. Удаление дубликатов из списка
  45. Копирование файлов с shutil()
  46. Аннотации типов в Python

Marketello читают маркетологи из крутых компаний