Курс 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
- Возврат нескольких значений
- Перебор элементов списка в Python
- Анонимные функции в Python
- Измерение времени выполнения кода
- Сравнение def и lambda-функций
- Основные функции и модули Python
- Работа со строками в Python
- Метод ifloordiv для пользовательских классов
- Атрибуты массивов в Numpy
- Получение ID процесса
- Профилирование с Pandas
- Обработка исключений с блоком else
- Python UserString — создание подклассов строк
- Метод splitlines() для разделения строк
- Создание класса в Python
- Генерация QR-кодов с Python
- Проверка индексов коллекции
- Применение функции к списку
- Бинарный поиск
- Работа с IP-адресами в Python
- Необязательные аргументы в Python
- Оптимизация гиперпараметров в Python
- Объединение словарей в Python
- Подсчет элементов в списке с Counter
- Считывание бинарного файла в Python
- Преобразование чисел в слова
- Метод setdefault() в Python
- Преобразование символов в нижний регистр
- Работа с датами в Python
- Форматирование строк в Python.
- Работа с многоуровневыми словарями в Python
- Метод getitem для доступа к элементам последовательности
- Определение объема памяти объекта
- Обрезка изображения с Pillow
- Инициализация структур данных
- Создание уникального проекта
- Копирование списков в Python
- Экспорт данных с помощью writefile















