Курс 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. Импорт классов из другого файла
  3. Выборка чисел
  4. Удаление элементов из списка
  5. Создание новой даты в Python
  6. Глобальные переменные в Python
  7. Возврат нескольких значений
  8. Перебор элементов списка в Python
  9. Анонимные функции в Python
  10. Измерение времени выполнения кода
  11. Сравнение def и lambda-функций
  12. Основные функции и модули Python
  13. Работа со строками в Python
  14. Метод ifloordiv для пользовательских классов
  15. Атрибуты массивов в Numpy
  16. Получение ID процесса
  17. Профилирование с Pandas
  18. Обработка исключений с блоком else
  19. Python UserString — создание подклассов строк
  20. Метод splitlines() для разделения строк
  21. Создание класса в Python
  22. Генерация QR-кодов с Python
  23. Проверка индексов коллекции
  24. Применение функции к списку
  25. Бинарный поиск
  26. Работа с IP-адресами в Python
  27. Необязательные аргументы в Python
  28. Оптимизация гиперпараметров в Python
  29. Объединение словарей в Python
  30. Подсчет элементов в списке с Counter
  31. Считывание бинарного файла в Python
  32. Преобразование чисел в слова
  33. Метод setdefault() в Python
  34. Преобразование символов в нижний регистр
  35. Работа с датами в Python
  36. Форматирование строк в Python.
  37. Работа с многоуровневыми словарями в Python
  38. Метод getitem для доступа к элементам последовательности
  39. Определение объема памяти объекта
  40. Обрезка изображения с Pillow
  41. Инициализация структур данных
  42. Создание уникального проекта
  43. Копирование списков в Python
  44. Экспорт данных с помощью writefile

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