Модуль Copy Python

Модуль Copy представляет собой набор функций, связанных с копированием различных элементов списка, объектов, массивов и т. д. Его можно использовать для создания как неглубоких (shallow), так и глубоких (deep) копий.

Из документации Python 3 здесь

Операторы присваивания в Python не копируют объекты, они создают привязки между целью и объектом. Для изменяемых коллекций или коллекций, содержащих изменяемые элементы, иногда требуется копия, чтобы можно было изменять одну копию, не изменяя другую. Этот модуль предоставляет общие операции неглубокого (shallow) и глубокого (deep) копирования.

Операции неглубокого копирования (Shallow copy operations)

Неглубокое копирование создает новый составной объект, а затем (насколько это возможно) вставляет в него ссылки на объекты, найденные в оригинале.

copy.copy(x) Возвращает неглубокую копию x.

import copy
a = [[1],[2],[3]]
# Создаем неглубокую копию (вложенные списки все еще ссылаются)
b = copy.copy(a)

a
[[1], [2], [3]]
b
[[1], [2], [3]]

Без импорта модуля copy вы не сможете его использовать

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'copy' is not defined

Операции глубокого копирования (Deep copy operations)

Глубокое копирование создает новый составной объект, а затем рекурсивно вставляет в него копии объектов, найденных в оригинале.

copy.deepcopy(x[, memo]) Возвращает глубокую копию x.

import copy
a = [[1],[2],[3]]
# Создаем глубокую копию (полностью независимая копия)
b = copy.deepcopy(a)

# Изменяем оригинал
a[0][0] = 0
a[1] = None

a
[[0], None, [3]]
b
[[1], [2], [3]]

Соответствующие ссылки