Курс 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: строки, типы данных
- Подписка на SelectelNews в Twitter
- Оптимизация памяти в Python
- Генераторы в Python
- Замер времени выполнения кода
- Flask — веб-фреймворк Python
- Документация функции help() в Python
- Удаление дубликатов с помощью множеств
- Сериализация данных в JSON с помощью json.dumps
- Отделение звука от видео
- Метод rsub в Python: расширение функциональности вычитания
- Удаление специальных символов
- Функция zip() для объединения списков
- Работа с типами данных в Python с помощью pydantic.
- Запрос DELETE с библиотекой requests
- Создание новых функций с помощью functools.partial
- Реализация операции -= для пользовательского класса
- Создание списка через цикл
- Функция reduce() из модуля functools
- Декораторы в Python
- Протокол управления контекстом
- Виртуальные среды в Python
- Регистрация на хакатоне
- Преобразование чисел в Python
- Работа с утверждениями в Python
- Поиск анаграмм с Counter
- Генератор списка с условием if
- Библиотека itertools: объединение списков
- Изучение объектов с помощью dir()
- Определение объема памяти объекта
- Особенности множеств в Python
- Управление контекстом выполнения кода
- Генерация резюме в Gensim
- Инверсия списка и строки
- Печать списка с помощью метода join
- Область видимости переменных в Python
- Работа с множествами в Python
- Удаление falsy-значений из списка с помощью filter
- Метод rpow в Python
- Объединение строк с помощью метода join
- Получение значений из словарей
- Метод add для класса Vector
- Работа с многоуровневыми словарями в Python
- Рекурсия для обращения строки
- Применение функции к элементам списка
- Сериализация объектов в Python
- Отношения подклассов в Python
- Форматирование строк в Python
- Блок try-except-else















