Курс 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"
- Копирование и вставка текста в Python
- Срез в Python
- Представление бесконечности в Python
- Разработка Telegram-ботов
- Преобразование символов в нижний регистр
- Работа с асинхронными задачами в Python
- Работа с timedelta
- Импорт с альтернативным именем
- Настройка Cron
- Поиск с помощью регулярных выражений
- Оператор is в Python
- Основы работы со списками
- Метод rpow в Python
- Сортировка и обратный порядок
- Работа с массивами в Python
- Работа с deque из collections
- Метод Event.wait() в Python
- Списковое включение в Python
- Определение функций с необязательными аргументами
- Группировка элементов Python
- Функции map, filter и reduce
- Разбиение строки в Python
- Установка и использование emoji
- Печать списка с помощью метода join
- Символ подчеркивания в Python
- Работа с zip()
- Перезагрузка оператора в Python
- Оператор объединения словарей
- Вложенные генераторы в Python
- Мониторинг памяти с Pympler
- Оператор is в Python
- Настройка нарезки списков
- Условное добавление элементов в список
- Использование type hints
- Подчеркивание в REPL
- Генерация строк с .join()
- Деление в Python
- Работа с Colorama
- Особенности множеств в Python
- Виртуальные среды в Python
- Область видимости переменных
- Решатель судоку на Python с pygame
- Получение срезов итераторов
- Модуль sys: основы
- Эффективная конкатенация строк в Python
- Метод __imod__ для Python
- Преобразование данных в Python















