Дрон Кодер — программирование для детей и взрослых в игровой форме. Начать бесплатно

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; не присваивайте его результат.

Начать игру бесплатно
Попробуй прямо здесь
Уровень 1

Задание