Курс 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. PUT запрос для обновления данных
  2. Парсинг статей с Newspaper3k
  3. Метод rxor для операции побитового исключающего «или»
  4. Модуль sys: основы
  5. Списковое включение в Python
  6. Перевернуть список в Python
  7. Непрерывная проверка в Python
  8. Сортировка HTML по CSS-селектору
  9. Создание обратного итератора
  10. Метод join() для объединения элементов строки
  11. Объединение списков в Python
  12. Разделение строки с помощью re.split()
  13. Метод get() в Python
  14. Метод ipow для возведения в степень
  15. Работа с множествами в Python
  16. Поиск наиболее частого элемента в списке
  17. Декораторы в Python
  18. Отношения подклассов в Python
  19. Сортировка в Python
  20. Мониторинг памяти с Pympler
  21. Открытие и запись файлов
  22. Генератор списка с условием if
  23. Закрытие файла в Python
  24. Работа с географическими данными.
  25. Навыки Python: строки, типы данных
  26. Декораторы с аргументами
  27. Flask: создание веб-приложений
  28. Метод join() для объединения элементов
  29. Декодирование байтов в строку
  30. Работа с файлами в Python
  31. Курсы Яндекс Практикум
  32. Работа с пакетами
  33. Метод split() в Python
  34. Заказ карты Тинькофф Black
  35. Генераторы списков в Python
  36. Удаление дубликатов в pandas
  37. Поиск индекса элемента в списке
  38. Обновление множества в Python
  39. SciPy: широкий функционал для математических операций
  40. Перевод двоичного кода в целое число
  41. Сортировка с помощью key
  42. Получение списка файлов в директории с использованием os
  43. Переопределение метода divmod
  44. Определение функций с необязательными аргументами
  45. Метод count() для списка
  46. Python reversed() vs срез[::-1]

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