Статья

Python: сортировки

5 сентября 2026~8 минут10–11 класс

Разберём «Python: сортировки» по шагам: короткая теория, наглядный пример, разбор типового задания и ловушки, на которых теряют баллы. В конце — что запомнить и где закрепить на практике.

Зачем нужны сортировки в Python

Когда список чисел, фамилий или результатов выглядит как случайная куча, найти нужное значение становится трудно. Сортировка помогает расположить элементы по возрастанию или убыванию, быстро увидеть минимум и максимум, сравнить результаты и подготовить данные к дальнейшим вычислениям. В этой статье ты разберёшь основные способы сортировки в Python, научишься выбирать подходящий метод и замечать типичные ошибки.

Самый простой вариант — встроенная функция sorted(). Она принимает последовательность и возвращает новый отсортированный список. Исходные данные при этом не меняются.

\( numbers = [7, 2, 9, 1] \)
\( result = sorted(numbers) \)
print(result)
[1, 2, 7, 9]

Если нужно изменить именно существующий список, используют метод sort(). Он ничего не возвращает, а перестраивает список на месте. Это различие часто проверяют в заданиях: sorted() создаёт результат, а sort() меняет объект.

Возрастание, убывание и параметр reverse

По умолчанию Python сортирует числа от меньшего к большему, то есть по возрастанию. Для обратного порядка добавляют аргумент reverse=True. Такой параметр можно применять и с sorted(), и с методом sort().

\( scores = [48, 72, 61, 90] \)
\( print(sorted(scores, reverse=True)) \)
[90, 72, 61, 48]

Важно не перепутать запись reverse=True с сортировкой по алфавиту в обратном порядке: это общий переключатель направления. Строки тоже сортируются, но сравниваются посимвольно. Поэтому заглавные и строчные буквы могут оказаться в неожиданном порядке.

Совет репетитора

Перед сортировкой уточни, что именно должно измениться: порядок элементов или сам список. Если исходные данные понадобятся ещё раз, выбирай sorted() и сохраняй результат в отдельную переменную.

В задачах ОГЭ и ЕГЭ полезно сначала выписать требуемый порядок словами: «от меньшего к большему» или «от большего к меньшему». После этого направление сортировки выбирается почти безошибочно.

Сортировка по ключу key

Иногда элементы нужно сравнивать не целиком, а по определённому признаку. Для этого у сортировки есть параметр key. В него передают функцию, которая получает элемент и возвращает значение для сравнения. Часто используют встроенные функции len или небольшую функцию lambda.

ЗадачаЗаписьЧто сравнивается
По длине словsorted(words, key=len)Количество символов
По модулю чиселsorted(nums, key=abs)Расстояние от нуля
По второму элементу парыsorted(items, key=lambda x: x[1])Значение с индексом 1

words = ["дом", "машина", "кот"]
\( print(sorted(words, key=len)) \)
["дом", "кот", "машина"]

Функция key не меняет элементы, а только объясняет Python, по какому признаку их расположить. Это особенно удобно при работе с таблицами, словарями и списками пар.

Разобранный пример: результаты учеников

Представим список пар: имя ученика и его результат. Нужно вывести учеников от самого высокого результата к самому низкому. Сначала определяем, где находится балл: во втором элементе пары, то есть под индексом 1. Затем передаём в key функцию, возвращающую этот элемент, и включаем обратный порядок.

results = [("Ира", 72), ("Олег", 91), ("Маша", 84)]
\( ordered = sorted(results, key=lambda item: item[1], reverse=True) \)
print(ordered)
[("Олег", 91), ("Маша", 84), ("Ира", 72)]

Разберём ход выполнения. Python берёт каждую пару и вычисляет для неё ключ: для Иры это 72, для Олега 91, для Маши 84. Затем сравнивает ключи и располагает пары по убыванию. При этом каждая пара сохраняется целиком: имя не отделяется от результата.

Если требуется обычный порядок по баллам, достаточно убрать reverse=True. Если нужно сортировать по имени, ключом будет item[0]. Такая схема универсальна: сначала найди нужное поле, затем укажи его индекс в функции-ключе.

Бесплатно потренироваться на похожих задачах можно в личном кабинете: после регистрации удобно сразу проверить, как работает key.

Типичные ошибки и устойчивость сортировки

Первая ошибка — ожидать, что sort() вернёт новый список. На самом деле результатом будет None, потому что список уже изменён внутри.

\( a = [3, 1, 2] \)
\( b = a.sort() \)
print(b)
None

Вторая ошибка — сортировать числа как строки. Например, в текстовом порядке значение "10" может оказаться раньше "2", потому что сравнение начинается с первого символа. Если данные прочитаны через input(), преобразуй их в числа с помощью int() или float().

Ловушка

Не пиши sorted(numbers, reverse="True"). Здесь передана строка, а нужен логический параметр True без кавычек.

Сортировка в Python устойчива: элементы с одинаковым ключом сохраняют исходный взаимный порядок. Это удобно, когда нужно выполнять несколько последовательных сортировок по разным признакам.

Если хочется закрепить различия между методами, реши несколько заданий в бесплатной практике и сравни вывод программы с ожидаемым результатом.

Что запомнить

Для получения нового отсортированного списка используй sorted(), а для изменения существующего — sort(). Аргумент reverse=True задаёт убывающий порядок. Параметр key позволяет сортировать объекты по выбранному признаку: длине, модулю, индексу или полю записи.

Перед написанием кода ответь на три вопроса: что является элементом списка, по какому признаку его сравнивать и в каком направлении нужен результат. Отдельно проверь, не являются ли числа строками, и не пытаешься ли сохранить результат метода sort().

Следующий шаг — зарегистрируйся и реши 5 заданий бесплатно в личном кабинете. После этого попробуй самостоятельно составить сортировку для списка пар и объяснить каждую часть записи.

Чем отличаются sorted() и sort()?

sorted() возвращает новый отсортированный список и сохраняет исходный. sort() изменяет исходный список на месте и возвращает None.

Как отсортировать список по убыванию?

Передай аргумент reverse=True: например, sorted(numbers, reverse=True).

Как отсортировать строки по длине?

Используй параметр ключа: sorted(words, key=len). Python сравнит длины строк.

Как закрепить тему после разбора?

Реши несколько задач с числами, строками и списками пар. Для каждой сначала словами определи признак сортировки, затем напиши код и проверь результат на небольшом примере.

Не оставляйте тему «прочитанной»

Понимание — половина дела. Вторая — практика с обратной связью: личный кабинет Просто Урок покажет, где вы ошибаетесь, и подтянет слабые места.

Важно. Материалы сайта носят информационно-образовательный характер и не являются публичной офертой (ст. 437 ГК РФ), индивидуальной консультацией или руководством к действию. Мы аккуратно работаем с фактами, но не гарантируем полную точность и актуальность: структура и правила экзаменов могут меняться — сверяйтесь с официальными источниками (ФИПИ, действующие кодификаторы и нормативные акты РФ). Администрация сайта не несёт ответственности за возможные неточности и за решения, принятые на основе материалов. Заметили неточность — напишите нам, мы исправим.