Есть модуль copy, который отвечает за глубокую и поверхностную копию

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

Копирует объект на 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)

Глубокая копия

Создает новый полностью независимый объект.

import copy

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

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

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