Курс 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
- Возврат значений из генератора
- Перемешивание списка с shuffle()
- Разрешение имен в Python
- Инициализация переменных
- Возврат нескольких значений
- Проверка условий: all и any
- Создание уникального проекта
- Работа со временем в Python
- Функция print() — вывод информации
- Создание комплексных чисел
- Сохранение Unicode в JSON
- Функция divmod() в Python
- GitHub в Telegram: подписка на уведомления
- Функция map() и ленивая оценка
- Установка Python — Простое руководство
- Оператор in в Python
- Применение промокода в Много лосося
- Операции с массивами в NumPy
- Переопределение метода sub
- Метод __iand__ для пользовательских классов
- Логирование с Logzero
- Инверсия списка и строки в Python
- Логические значения в Python
- Определение объема памяти объекта
- Выход из профиля в Django
- Разница между датами
- Проверка запуска скрипта или импорта модуля
- Работа с файлами и директориями в Python.
- Проверка класса объекта
- Удаление символа из строки
- Замена подстроки
- Работа с модулем os в Python
- Библиотека sh: использование команд bash в Python
- Поиск кода
- Преобразование текста в нижний регистр
- Ввод нескольких значений
- Запуск внешнего кода в Jupyter
- Транспонирование 2D-массива с помощью zip
- Особенности ключей словаря в Python
- Работа с процессами в Python
- Метод rmatmul для пользовательских матриц
- Профилирование кода















