Курс 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
- Метод join() для объединения элементов
- Генераторы в Python
- Удаление файлов с shutil.os.remove()
- Использование функции enumerate()
- Преобразование регистра символов
- Работа с каталогами в Python
- Функции с дополнением
- Копирование объектов в Python
- GitHub в Telegram: подписка на уведомления
- Измерение времени выполнения кода
- Методы __repr__ и __str__ в Python
- Проверка подстроки в строке
- Многострочные строки в Python
- Модуль os в Python: работа с файлами
- Шаблоны и наследование в Flask
- Вложенные генераторы в Python
- Метод title() в Python
- Сравнение def и lambda в Python
- Переменная с нижним подчеркиванием
- Библиотека schedule: планировщик задач
- Модуль subprocess: запуск внешних команд
- Работа с массивами в Python
- Транспонирование 2D-массива с помощью zip
- Подсчет частоты элементов с Counter
- Управление виртуальными окружениями в Python
- Метод join() для объединения элементов строки
- Профилирование кода
- Метод get для словаря
- Создание новых списков
- Удаление специальных символов
- Импорт модуля из другого каталога
- Переворот строки с помощью срезов
- Поиск индекса элемента
- Работа с областями видимости переменных
- Поиск с помощью регулярных выражений
- Обход дочерних элементов BeautifulSoup
- Декоратор total_ordering для класса Point
- Функция format() в Python
- Преобразование числа в список цифр
- Создание лямбда-функций
- Работа с файлами в Python
- Декодирование строк в Python
- Применение функции к элементам списка















