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.