Курс 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. Создание даты из строки ISO
  2. Объединение строк с помощью метода join
  3. Закрытие файла в Python
  4. Декоратор Ajax required
  5. Блок try-except-else
  6. Проверка вхождения подстроки
  7. Создание вложенного генератора
  8. Переопределение оператора % для объектов
  9. Оператор in для Python
  10. Генераторы в Python
  11. Работа с буфером обмена на Python
  12. Python: цикл for и оператор присваивания
  13. Разбиение строки в Python
  14. Оператор распаковки в Python
  15. Повторение элементов списков
  16. Возврат нескольких значений
  17. Мониторинг памяти с Pympler
  18. Профилирование кода на Python
  19. Декодирование байтов в строку
  20. Бинарный поиск
  21. Генерация чисел с range()
  22. Создание циклической ссылки
  23. Стать Python-разработчиком
  24. Установка и использование howdoi
  25. Создание словарей с defaultdict()
  26. Математические функции в Python
  27. Метод join() для объединения элементов
  28. Основы работы со строками в Python
  29. Переопределение метода __lshift__
  30. Показ всплывающих окон Tkinter
  31. Умножение строк и списков
  32. Передача аргументов через **arguments
  33. Управление пакетами с pip
  34. Библиотека Rich: форматирование текста
  35. Многопроцессорное программирование в Python
  36. Логирование в Python
  37. Поиск простых чисел
  38. Удаление символа из строки
  39. Логирование с Loguru
  40. Добавление элемента к кортежу
  41. Получение срезов итераторов
  42. Хэш-функции в Python
  43. Атрибуты массивов в Numpy
  44. Python Enumerate
  45. Использование html-скриптов в Jupyter Notebook
  46. Логирование в Python

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