Что такое поверхностная копия

Копирует объект на 1 уровень в глубину, но заполняет его ссылками на дочерние объекты. А изменения в оригинале так же будут отображаться в копии.

import copy

some_list = [[1, 2], [1, 2], 100000]
new_list = copy.copy(some_list)

some_list[1][0] = 'one'
some_list[2] = 'change'

print(some_list) # [[1, 2], ['one', 2], 'change']
print(new_list) # [[1, 2], ['one', 2], 100000]

# Поверхностную копию можно сделать через модуль копи
# или через встроенный метод copy()
new_list = some_list.copy()

# или через встроенную функцию присваивания
new_list = list(some_list)


 

Oct. 10, 2023, Источник

Поверхностная копия (shallow copy) — это создание копии объекта, но только самого верхнего уровня его структуры данных. В отличие от глубокой копии, поверхностная копия не копирует вложенные объекты, а только ссылается на них. Это означает, что если изменить вложенный объект в исходном объекте, то эти изменения будут отражены и в его копии, так как оба объекта будут ссылаться на одни и те же вложенные объекты.

Для создания данной копии можно использовать модуль `copy` и его функцию `copy`. Пример:

import copy

original_list = [1, [2, 3], 4]
copied_list = copy.copy(original_list)

original_list[1][0] = 5  # Изменение исходного списка

print(original_list)  # Вывод: [1, [5, 3], 4]
print(copied_list)     # Вывод: [1, [5, 3], 4]

В этом примере `copy` создает поверхностную копию `original_list` в `copied_list`. При изменении значения элемента вложенного списка в `original_list`, эти изменения также отражаются в `copied_list`, так как оба объекта ссылаются на один и тот же вложенный список `[2, 3]`.

Feb. 19, 2024, easyoffer