Курс 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. Изменение переменной в Python: nonlocal
  3. Вывод букв строки в Python
  4. Функция findall() для поиска вхождений строки
  5. Сравнение строк в Python
  6. Работа с очередями в Python
  7. Создание функций высшего порядка
  8. Декораторы в Python
  9. Автоматизация скриптов на AWS Lightsail.
  10. Форматирование чисел в Python
  11. Разделение строки с помощью split()
  12. Лямбда-функции в defaultdict
  13. Простой калькулятор Python
  14. Работа с JSON данными в Python
  15. Получение ID текущего процесса
  16. Измерение времени выполнения кода с помощью time
  17. Функции min(), max(), sum()
  18. Возврат нескольких значений
  19. Создание namedtuple списком полей
  20. Создание вложенных циклов for
  21. Получение идентификатора объекта в памяти
  22. Метод setdefault() в Python
  23. Работа с географическими данными.
  24. Печать в одной строке
  25. Расширение информации об ошибке в Python
  26. Сравнение def и lambda функций в Python
  27. Обучение модели с указанием эпох
  28. Основные операции с библиотекой Numpy
  29. Работа с срезами в Python
  30. Генерация QR-кодов с библиотекой qrcode
  31. Копирование объектов в Python
  32. Итерация по копии коллекции
  33. Работа с enumerate()
  34. Основные методы NumPy
  35. Повторение элементов в Python
  36. Обработка исключений в Python 3
  37. Локальные переменные.
  38. Порядок операций в Python
  39. Работа с CSV файлами в Python
  40. Метод setdefault() в Python
  41. Работа с контекст-менеджером «with»
  42. Удаление специальных символов
  43. Показ всплывающих окон Tkinter
  44. Проверка типа данных
  45. Отступы в Python
  46. Распаковка элементов массива

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