sorted и sort: в чём разница
В Python две сортировки с похожими именами, и новички их путают. Разница простая, но важная.
sorted() возвращает новый список
Функция sorted() не трогает исходные данные — она возвращает НОВЫЙ отсортированный список. Это удобно, когда исходный порядок нужно сохранить.
a = [3, 1, 2]
b = sorted(a)
print(a, b) # [3, 1, 2] [1, 2, 3]
.sort() сортирует на месте
Метод .sort() меняет сам список и ничего не возвращает (точнее, возвращает None). Он работает только со списками и подходит, когда исходный порядок больше не нужен.
a = [3, 1, 2]
a.sort()
print(a) # [1, 2, 3]
Общие возможности
Обе умеют сортировать по убыванию (reverse=True) и по правилу (параметр key) — например, по длине слова. Частая ошибка новичка — написать a = a.sort(): тогда a станет None, ведь .sort() ничего не возвращает.
Частые вопросы
Что выбрать? Нужен новый список и сохранить исходный — sorted(); менять на месте — .sort().
Почему после a = a.sort() список стал None? .sort() возвращает None; не присваивайте его результат.
Начать игру бесплатно