Курс 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. Метод join() для объединения элементов
  4. Генераторы в Python
  5. Удаление файлов с shutil.os.remove()
  6. Использование функции enumerate()
  7. Преобразование регистра символов
  8. Работа с каталогами в Python
  9. Функции с дополнением
  10. Копирование объектов в Python
  11. GitHub в Telegram: подписка на уведомления
  12. Измерение времени выполнения кода
  13. Методы __repr__ и __str__ в Python
  14. Проверка подстроки в строке
  15. Многострочные строки в Python
  16. Модуль os в Python: работа с файлами
  17. Шаблоны и наследование в Flask
  18. Вложенные генераторы в Python
  19. Метод title() в Python
  20. Сравнение def и lambda в Python
  21. Переменная с нижним подчеркиванием
  22. Библиотека schedule: планировщик задач
  23. Модуль subprocess: запуск внешних команд
  24. Работа с массивами в Python
  25. Транспонирование 2D-массива с помощью zip
  26. Подсчет частоты элементов с Counter
  27. Управление виртуальными окружениями в Python
  28. Метод join() для объединения элементов строки
  29. Профилирование кода
  30. Метод get для словаря
  31. Создание новых списков
  32. Удаление специальных символов
  33. Импорт модуля из другого каталога
  34. Переворот строки с помощью срезов
  35. Поиск индекса элемента
  36. Работа с областями видимости переменных
  37. Поиск с помощью регулярных выражений
  38. Обход дочерних элементов BeautifulSoup
  39. Декоратор total_ordering для класса Point
  40. Функция format() в Python
  41. Преобразование числа в список цифр
  42. Создание лямбда-функций
  43. Работа с файлами в Python
  44. Декодирование строк в Python
  45. Применение функции к элементам списка

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