list.copy()
Метод copy() возвращает поверхностную (shallow) копию списка. Это эквивалент среза lst[:] или вызова list(lst). «Поверхностная» означает, что копируется сам список, но вложенные объекты остаются общими — копируются только ссылки на них.
Сигнатура
list.copy()
Параметры
Метод не принимает аргументов.
Возвращаемое значение
Новый список (list) с теми же элементами, что и исходный.
Примеры использования
Пример 1. Простое копирование.
original = [10, 20, 30]
duplicate = original.copy()
duplicate.append(40)
print(original)
print(duplicate)
[10, 20, 30]
[10, 20, 30, 40]
Пример 2. Сравнение трёх способов.
src = ["a", "b", "c"]
c1 = src.copy()
c2 = src[:]
c3 = list(src)
print(c1 == c2 == c3 == src)
print(c1 is src, c2 is src, c3 is src)
True
False False False
Пример 3. Подводный камень — вложенные списки.
Поверхностная копия не дублирует вложенные объекты:
matrix = [[1, 2], [3, 4]]
shallow = matrix.copy()
shallow[0].append(99)
print(matrix)
print(shallow)
[[1, 2, 99], [3, 4]]
[[1, 2, 99], [3, 4]]
Пример 4. Глубокая копия через copy.deepcopy().
Когда нужно полностью независимое дерево объектов:
import copy
matrix = [[1, 2], [3, 4]]
deep = copy.deepcopy(matrix)
deep[0].append(99)
print(matrix)
print(deep)
[[1, 2], [3, 4]]
[[1, 2, 99], [3, 4]]
Пример 5. Сохранение исходных данных перед сортировкой.
readings = [25, 21, 23, 22, 24]
sorted_view = readings.copy()
sorted_view.sort()
print("Исходные:", readings)
print("Отсортированные:", sorted_view)
Исходные: [25, 21, 23, 22, 24]
Отсортированные: [21, 22, 23, 24, 25]
См. также
list.clear() — очистка списка
list.extend() — добавление элементов другого списка
list.sort() — сортировка на месте
Примечание
Лицензия и источники
Техническое описание метода адаптировано из официальной документации Python (https://docs.python.org), доступной под Python Software Foundation License Version 2. Перевод на русский, примеры использования и пояснения — © AlashEd Wiki.