Курс 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. Подписка на SelectelNews в Twitter
  3. Оптимизация памяти в Python
  4. Генераторы в Python
  5. Замер времени выполнения кода
  6. Flask — веб-фреймворк Python
  7. Документация функции help() в Python
  8. Удаление дубликатов с помощью множеств
  9. Сериализация данных в JSON с помощью json.dumps
  10. Отделение звука от видео
  11. Метод rsub в Python: расширение функциональности вычитания
  12. Удаление специальных символов
  13. Функция zip() для объединения списков
  14. Работа с типами данных в Python с помощью pydantic.
  15. Запрос DELETE с библиотекой requests
  16. Создание новых функций с помощью functools.partial
  17. Реализация операции -= для пользовательского класса
  18. Создание списка через цикл
  19. Функция reduce() из модуля functools
  20. Декораторы в Python
  21. Протокол управления контекстом
  22. Виртуальные среды в Python
  23. Регистрация на хакатоне
  24. Преобразование чисел в Python
  25. Работа с утверждениями в Python
  26. Поиск анаграмм с Counter
  27. Генератор списка с условием if
  28. Библиотека itertools: объединение списков
  29. Изучение объектов с помощью dir()
  30. Определение объема памяти объекта
  31. Особенности множеств в Python
  32. Управление контекстом выполнения кода
  33. Генерация резюме в Gensim
  34. Инверсия списка и строки
  35. Печать списка с помощью метода join
  36. Область видимости переменных в Python
  37. Работа с множествами в Python
  38. Удаление falsy-значений из списка с помощью filter
  39. Метод rpow в Python
  40. Объединение строк с помощью метода join
  41. Получение значений из словарей
  42. Метод add для класса Vector
  43. Работа с многоуровневыми словарями в Python
  44. Рекурсия для обращения строки
  45. Применение функции к элементам списка
  46. Сериализация объектов в Python
  47. Отношения подклассов в Python
  48. Форматирование строк в Python
  49. Блок try-except-else

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