Курс 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. Преобразование букв в нижний регистр
  2. Библиотека sh: использование команд bash в Python
  3. Применение функции к элементам списка
  4. Операции с матрицами в Python
  5. Форматирование строк в Python
  6. Кортеж в Python: создание и использование
  7. Особенности запятых в Python
  8. Работа с IP-адресами в Python
  9. Удаление элементов из списка в Python
  10. Повторение элементов в Python
  11. Профилирование с cProfile
  12. Метод count() для списков
  13. Подписка на SelectelNews в Twitter
  14. Оператор объединения словарей
  15. Операторы увеличения и уменьшения в Python
  16. Особенности ключей словаря в Python
  17. Разделение строки на пары ключ-значение.
  18. Декораторы в Python
  19. Многопоточность в Python
  20. Сериализация объектов в Python
  21. Работа со слайсами
  22. Работа с argparse
  23. Создание и инициализация объектов
  24. Управление импортом в Python
  25. Импорт объектов из модулей
  26. Равенство и идентичность в Python
  27. globals и locals
  28. Реверс строки и списка в Python.
  29. Преобразование регистра символов
  30. Прокачанный трейсинг ошибок
  31. Bootle — простой веб-фреймворк
  32. Использование defaultdict в Python
  33. Запрос DELETE с библиотекой requests
  34. Обмен значений переменных в Python
  35. Поиск индекса элемента в списке
  36. Defaultdict в Python
  37. Разделение строки с помощью re.split()
  38. Проблемы с dict в Python
  39. Метод hash в Python
  40. Подсчет элементов в Python
  41. Разделение строки с помощью split()
  42. Тестирование с unittest
  43. Многопроцессорное программирование в Python
  44. Нахождение хеша для бесконечности и NaN в Python
  45. Модуль math: основные функции
  46. Настройка вывода NumPy
  47. Объединение списков в Python.
  48. Создание виртуальной среды

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