Курс 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. Логический оператор «and» в Python
  2. Python itertools combinations() — группировка элементов
  3. Создание новой даты в Python
  4. Работа с defaultdictами в Python
  5. Генераторы по генератору
  6. Colorama: окрашивание текста в Python
  7. Методы работы со списками
  8. Работа с исключениями в Python
  9. Работа со случайными элементами
  10. globals и locals
  11. Использование двоеточия в Python
  12. Генераторы списков в Python
  13. Создание пользовательской коллекции в Python
  14. Декораторы для регистрации функций
  15. Функциональное программирование в Python
  16. Отслеживание выполнения программы с библиотекой tqdm
  17. Работа с библиотекой requests
  18. Объединение, распаковка и деструктуризация
  19. Основы работы с базами данных в Python
  20. Декораторы в Python
  21. Работа с timedelta
  22. Роль запятой в Python
  23. Однострочники Python
  24. Получение текущей даты и времени
  25. Проверка элемента в множестве.
  26. Ускоренный импорт библиотек
  27. Управление контекстом выполнения кода
  28. Дефолтные параметры в Python
  29. Область видимости переменных
  30. Удаление ресурса в Python
  31. Улучшение читаемости кода в Python
  32. Разделение строк в Python
  33. Преобразование данных в Python
  34. Работа с множествами в Python
  35. Работа с URL-адресами в Python
  36. Генераторы в Python
  37. Функция с **kwargs в Python
  38. Принцип одной функции
  39. Метод __ilshift__ для битового сдвига влево
  40. Оператор walrus в Python
  41. Декораторы в Python
  42. Необязательные аргументы в Python
  43. Печать месячного календаря
  44. Переопределение унарных операторов
  45. Создание словаря через dict comprehension
  46. Удаление элемента из списка
  47. Защита данных в Python

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