Курс 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. Библиотека Rich: форматирование текста
  4. Наследование в программировании
  5. Преобразование текста в нижний регистр
  6. Вычисление натуральных логарифмов в NumPy
  7. Генерация фальшивых данных с Faker
  8. Итерация по копии коллекции
  9. Оптимизация создания строк
  10. Создание тестовых данных с Faker
  11. Поиск кода
  12. Функция reduce() в Python
  13. Переопределение метода xor в Python
  14. Преобразование текста в речь с Python
  15. Профилирование с Pandas
  16. Множественные конструкторы в Python
  17. Определение объема памяти объекта
  18. Печать календаря в Python
  19. Метод join() для объединения элементов строки
  20. Работа с контекстными переменными
  21. F-строки в Python 3.8
  22. Модуль pprint: улучшение вывода данных
  23. Работа с zip-архивами в Python
  24. Округление в Python
  25. Фильтрация входных данных в Python
  26. Безопасные SQL-запросы в Python 3.11
  27. Обработка аргументов Python
  28. Присоединение элементов коллекции
  29. Обработка исключений
  30. JSON-esque в Python
  31. Создание вложенного генератора
  32. Python и Юникод: работа с цифрами
  33. Отправка POST запроса на сервер.
  34. Python defaultdict добавление ключа
  35. Удаление и повторная вставка ключа в OrderedDict
  36. Передача параметров в Python
  37. None в Python: использование и особенности
  38. Операторы сравнения в Python
  39. Построение графиков в терминале с bashplotlib
  40. Просмотр внешнего файла в Python
  41. Освоение Python
  42. Работа с областями видимости переменных
  43. Замена элементов в списке с помощью генераторов списков
  44. Тип данных TypeVarTuple
  45. Форматирование даты с strftime()
  46. Установка Home Assistant
  47. Создание и использование модулей в Python

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