Курс 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. Оформление кода по PEP 8
  2. Работа с enumerate()
  3. Выбор редактора кода.
  4. Создание спинбокса в tkinter
  5. Создание словаря с значением по умолчанию
  6. Управление экспортом элементов
  7. Основы работы со строками в Python
  8. split() без разделителя
  9. TON Smart Challenge #2: участие и подготовка
  10. Создание уникального проекта
  11. Обучение модели с указанием эпох
  12. Управление пакетами с pip
  13. Исключение NotImplementedError
  14. Копирование объектов в Python
  15. Метод сравнения объектов в Python
  16. Сравнение def и lambda функций в Python
  17. Установка и использование библиотеки google
  18. Метод classmethod
  19. Solidity для DeFi Ethereum
  20. Оптимизация строк в Python
  21. F-строки в Python
  22. Декораторы в Python
  23. Генераторы в Python
  24. Замена символов в Python
  25. Отслеживание выполнения программы с библиотекой tqdm
  26. Обрезка изображения с Pillow
  27. Удаление элементов из списка в Python.
  28. Параллельные вычисления в Python
  29. Функции в одну строку
  30. Циклы for в Python
  31. Именованные срезы в Python
  32. Разница между датами
  33. Установка User-Agent в Python
  34. Решение переменной Шредингера
  35. Обход элементов в Python
  36. Функции min(), max(), sum()
  37. Управление виртуальными средами в Python
  38. Обратный список чисел
  39. Поиск с библиотекой Google
  40. Функция print() — вывод информации
  41. Проверка на палиндром
  42. Генерация ключей RSA
  43. Избегание изменяемых аргументов
  44. Обмен данными с asyncio.Queue
  45. Counter() — подсчет элементов
  46. Метод __getitem__ в Python

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