Курс 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. Измерение времени выполнения с помощью time
  2. Работа с множествами в Python
  3. Возврат нескольких значений
  4. Работа с переменными в Python
  5. Лямбда-функции в Python
  6. Синхронизация доступа к ресурсам
  7. Python enumerate() для работы с индексами
  8. Кортеж в Python: создание и использование
  9. Форматирование даты с strftime()
  10. Вакансии в Nebius
  11. Создание и инициализация объектов
  12. Генераторы списков в Python
  13. Замена символов в строке
  14. Объединение словарей в Python
  15. Атрибуты класса и экземпляра
  16. Создание итерируемых объектов
  17. Область видимости переменных
  18. ROT13 Шифр Цезаря в Python
  19. Настройка логгера Logzero
  20. Функции map() и reduce() в Python
  21. Просмотр внешнего файла в Python
  22. Работа с датами в Python
  23. Модуль Antigravity в Python 3
  24. Работа с часовыми поясами в Python
  25. Ветвление выражения в Python
  26. Метод ifloordiv для пользовательских классов
  27. Функции с необязательными аргументами
  28. Аннотации типов в Python
  29. Очистка строки в Python
  30. Очистка данных в Python
  31. Деление в Python
  32. Поиск индексов в списке
  33. Получение списка файлов в директории с использованием os
  34. Глобальные переменные в Python
  35. Улучшенные подсказки для импорта в Python 3.12
  36. Управление памятью в Python
  37. Ускорение обработки данных с %autoawait
  38. Установка Git и AWS CLI
  39. Обработка аргументов Python
  40. Округление чисел с помощью round
  41. Python: изменяемые и неизменяемые коллекции
  42. Нахождение максимального значения и его индекса в списке
  43. Работа с модулем glob в Python
  44. Python reversed() функция
  45. Приоритет операций в Python
  46. Списковый компрехеншен.

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