0Pricing
Competitive Programming Academy · Урок

sorted() и функция key

Сортируйте числа, строки и кортежи

«sorted() и функция key» — бесплатный урок Competitive Programming Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Competitive Programming Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Competitive Programming Academy содержит 4 уроков всего.

Сортировка помогает побеждать на соревнованиях

Многие задачи соревнований становятся простыми, когда данные упорядочены. Ваш первый инструмент — sorted(), возвращающий новый упорядоченный список. 🏆

sorted() возвращает копию

Вызов sorted(nums) оставляет исходный список без изменений и возвращает новый отсортированный список. Это удобно, когда исходные данные ещё понадобятся.

nums = [3, 1, 2]
print(sorted(nums))   # [1, 2, 3]
print(nums)           # [3, 1, 2]

list.sort() сортирует на месте

Если исходный порядок Вам не нужен, list.sort() сортирует список на месте и возвращает None. Это экономит память на больших массивах.

nums = [3, 1, 2]
nums.sort()
print(nums)   # [1, 2, 3]

Порядок по умолчанию — по возрастанию

По умолчанию Python сортирует от меньшего к большему. Числа идут от меньших к большим, а строки — в словарном порядке, символ за символом.

print(sorted(["pear", "apple", "kiwi"]))
# ['apple', 'kiwi', 'pear']

Измените порядок с помощью reverse

Передайте reverse=True, чтобы сортировать от большего к меньшему. Это особенно удобно, когда жадный шаг требует сначала обработать самые большие элементы.

print(sorted([3, 1, 2], reverse=True))
# [3, 2, 1]

Познакомьтесь с функцией key

Аргумент key сообщает sort, как ранжировать каждый элемент. Python вызывает key для каждого элемента и упорядочивает элементы по возвращённым значениям.

words = ["bb", "a", "ccc"]
print(sorted(words, key=len))
# ['a', 'bb', 'ccc']

key с лямбда-выражением

Небольшое лямбда-выражение позволяет сортировать по любому выражению прямо в строке. Здесь числа упорядочиваются по расстоянию от нуля.

vals = [-5, 2, -1, 3]
print(sorted(vals, key=lambda x: abs(x)))
# [-1, 2, 3, -5]

Сортируйте объекты по полю

Для кортежей или записей укажите в key поле, которое имеет значение. Остальная часть элемента автоматически сохраняется рядом.

people = [("Ann", 30), ("Bob", 25)]
print(sorted(people, key=lambda p: p[1]))
# [('Bob', 25), ('Ann', 30)]

Сортировка устойчива

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

key лучше ручного сравнения

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

Сортировка стоит O(n log n)

Python сортирует за время O(n log n). При n до нескольких сотен тысяч это обычно укладывается в ограничение в одну секунду.

Быстрая проверка

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

Итоги

Теперь Вы умеете упорядочивать данные с помощью sorted() или сортировать их на месте, менять направление через reverse и ранжировать любые элементы с помощью key. Устойчивая сортировка сохраняет порядок равных элементов. 🎉

Часто задаваемые вопросы

Урок «sorted() и функция key» бесплатный?

Да — полный текст урока «sorted() и функция key» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Competitive Programming Academy, подпишись на CoddyKit PRO. Курс Competitive Programming Academy содержит 4 уроков всего.

Чему я научусь в уроке «sorted() и функция key»?

Сортируйте числа, строки и кортежи Ты практикуешь Competitive Programming Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Competitive Programming Academy?

Предыдущий опыт не требуется. Competitive Programming Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «sorted() и функция key»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Competitive Programming Academy?

Да. Каждый урок Competitive Programming Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. sorted() и функция key
  2. Сортировка по нескольким полям
  3. Пользовательский порядок с functools.cmp_to_key
  4. Почему сортировка открывает путь к решениям
← Назад к Competitive Programming Academy