Курс 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. Копирование и вставка текста в Python
  2. Срез в Python
  3. Представление бесконечности в Python
  4. Разработка Telegram-ботов
  5. Преобразование символов в нижний регистр
  6. Работа с асинхронными задачами в Python
  7. Работа с timedelta
  8. Импорт с альтернативным именем
  9. Настройка Cron
  10. Поиск с помощью регулярных выражений
  11. Оператор is в Python
  12. Основы работы со списками
  13. Метод rpow в Python
  14. Сортировка и обратный порядок
  15. Работа с массивами в Python
  16. Работа с deque из collections
  17. Метод Event.wait() в Python
  18. Списковое включение в Python
  19. Определение функций с необязательными аргументами
  20. Группировка элементов Python
  21. Функции map, filter и reduce
  22. Разбиение строки в Python
  23. Установка и использование emoji
  24. Печать списка с помощью метода join
  25. Символ подчеркивания в Python
  26. Работа с zip()
  27. Перезагрузка оператора в Python
  28. Оператор объединения словарей
  29. Вложенные генераторы в Python
  30. Мониторинг памяти с Pympler
  31. Оператор is в Python
  32. Настройка нарезки списков
  33. Условное добавление элементов в список
  34. Использование type hints
  35. Подчеркивание в REPL
  36. Генерация строк с .join()
  37. Деление в Python
  38. Работа с Colorama
  39. Особенности множеств в Python
  40. Виртуальные среды в Python
  41. Область видимости переменных
  42. Решатель судоку на Python с pygame
  43. Получение срезов итераторов
  44. Модуль sys: основы
  45. Эффективная конкатенация строк в Python
  46. Метод __imod__ для Python
  47. Преобразование данных в Python

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