← Все вопросы

Как отсортировать список — в чём разница sort и sorted, как по убыванию?

Задан 16 месяцев назад1.2к просмотров3 ответа
19

Видел и lst.sort(), и sorted(lst). Чем отличаются? И как отсортировать в обратном порядке?

3 ответа

31
✓ Принятый ответ — помог автору

Разница в том, что они делают с исходным списком:

  • lst.sort() — сортирует на месте, меняет сам список, возвращает None.
  • sorted(lst) — возвращает новый отсортированный список, оригинал не трогает. Работает с любым итерируемым (строки, кортежи, ключи словаря).
a = [3, 1, 2]

b = sorted(a)              # b = [1, 2, 3], a без изменений
a.sort()                   # теперь a = [1, 2, 3]

sorted(a, reverse=True)    # [3, 2, 1] — по убыванию
sorted(words, key=len)     # по длине строк

Частая ошибка новичков: a = a.sort() — после этого a станет None, потому что .sort() ничего не возвращает. Для присваивания нужен sorted().

Александра Виноградова вот про a = a.sort() = None прям моя боль была 😄 · 16 месяцев назад
9

По убыванию: добавь reverse=True — работает и в sort(), и в sorted().

-4

sort() возвращает отсортированный список, можно сразу присваивать

Boris Britva неа, sort() возвращает None и сортирует на месте. Новый список даёт sorted() · 16 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект