Курс 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. Получение локальных переменных в Python
  2. Генераторы в Python
  3. Глубокое копирование объектов
  4. Метод rlshift для битового сдвига
  5. Генератор списка с условием if
  6. Функция __init__ в Python
  7. Декораторы в Python
  8. Измерение времени выполнения с помощью time
  9. Глобальные переменные в Python
  10. Списковое включение в Python
  11. Оператор умножения для вектора
  12. Функция zip() в Python
  13. Операторы объединения в Python 3.9
  14. Python 3.12: переиспользование кавычек
  15. Работа с множествами в Python
  16. Проверка индексов коллекции
  17. Комплексные числа в Python
  18. Генераторы в Python
  19. Удаление элементов из списка
  20. Фильтрация данных в Python.
  21. Метод __float__ в Python
  22. Defaultdict в Python
  23. Вложенные генераторы в Python
  24. Создание словарей и множеств в Python.
  25. Создание функций с произвольным количеством аргументов
  26. Работа с контекстными переменными
  27. split() без разделителя
  28. Разделение функций на этапы
  29. Создание новых списков в Python
  30. Создание графики с черепахой
  31. Декораторы в Python
  32. Управление фоновыми задачами в Python
  33. Перетасовка списков в Python
  34. Работа с argparse
  35. Изменение IP-адреса в Python
  36. Функция print() — вывод информации
  37. Создание GUI с Tkinter: Entry
  38. Преобразование в float
  39. Проверка версии Python
  40. Преобразование чисел в слова
  41. Методы в Python
  42. Разбиение текста в Python
  43. Структурирование данных с Pydantic
  44. Открытие и запись файлов
  45. Форматирование данных с помощью pprint

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