Отличия reverse() от reversed(), sort() от sorted(), copy() от deepcopy()

1. reverse() vs reversed()

Метод / Функция
Что делает
Возвращает
Изменяет исходный объект?

list.reverse()

Разворачивает список на месте

None

Да

reversed(seq)

Возвращает итератор с элементами в обратном порядке

Итератор

Нет (исходный объект не меняется)

Пример:

lst = [1, 2, 3]

lst.reverse()
print(lst)  # [3, 2, 1]

lst2 = [1, 2, 3]
rev = reversed(lst2)
print(list(rev))  # [3, 2, 1]
print(lst2)       # [1, 2, 3]  - исходный список не изменился

2. sort() vs sorted()

Метод / Функция
Что делает
Возвращает
Изменяет исходный объект?

list.sort()

Сортирует список на месте

None

Да

sorted(iterable)

Возвращает новый отсортированный список

Новый список

Нет (исходный объект не меняется)

Пример:


3. copy() vs deepcopy()

Функция
Что делает
Особенности

copy.copy(obj)

Создаёт поверхностную копию объекта

Если объект содержит вложенные объекты, они не копируются, а остаются ссылками

copy.deepcopy(obj)

Создаёт глубокую копию объекта

Вложенные объекты тоже копируются, полностью независимая структура

Пример:


💡 Вывод:

  • reverse() и sort() — методы, изменяют объект на месте.

  • reversed() и sorted() — функции, возвращают новый объект, исходный не меняют.

  • copy() — поверхностная копия, вложенные объекты остаются общими.

  • deepcopy() — полная независимая копия, включая вложенные объекты.

Last updated

Was this helpful?