Курс 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. Возврат значений из генератора
  3. Перемешивание списка с shuffle()
  4. Разрешение имен в Python
  5. Инициализация переменных
  6. Возврат нескольких значений
  7. Проверка условий: all и any
  8. Создание уникального проекта
  9. Работа со временем в Python
  10. Функция print() — вывод информации
  11. Создание комплексных чисел
  12. Сохранение Unicode в JSON
  13. Функция divmod() в Python
  14. GitHub в Telegram: подписка на уведомления
  15. Функция map() и ленивая оценка
  16. Установка Python — Простое руководство
  17. Оператор in в Python
  18. Применение промокода в Много лосося
  19. Операции с массивами в NumPy
  20. Переопределение метода sub
  21. Метод __iand__ для пользовательских классов
  22. Логирование с Logzero
  23. Инверсия списка и строки в Python
  24. Логические значения в Python
  25. Определение объема памяти объекта
  26. Выход из профиля в Django
  27. Разница между датами
  28. Проверка запуска скрипта или импорта модуля
  29. Работа с файлами и директориями в Python.
  30. Проверка класса объекта
  31. Удаление символа из строки
  32. Замена подстроки
  33. Работа с модулем os в Python
  34. Библиотека sh: использование команд bash в Python
  35. Поиск кода
  36. Преобразование текста в нижний регистр
  37. Ввод нескольких значений
  38. Запуск внешнего кода в Jupyter
  39. Транспонирование 2D-массива с помощью zip
  40. Особенности ключей словаря в Python
  41. Работа с процессами в Python
  42. Метод rmatmul для пользовательских матриц
  43. Профилирование кода

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