JavaRush /Курсы /Модуль 1: Python Core /Сортировка списков

Сортировка списков

Модуль 1: Python Core
5 уровень , 7 лекция
Открыта

8.1 Сортировка списка

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

Метод sort()

Метод sort() сортирует список на месте, т.е. изменяет исходный список. Он очень эффективен и позволяет настроить сортировку через аргументы.


numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)  # Выведет [1, 2, 5, 9] 

Можно сортировать список в обратном порядке, установив параметр reverse=True.


numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers)  # Выведет [9, 5, 2, 1]

Функция sorted()

Функция sorted() создает новый список, являющийся отсортированной версией исходного. Исходный список при этом не изменяется, что часто делает sorted() предпочтительным выбором при необходимости сохранить исходные данные без изменений.


numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # Выведет [1, 2, 5, 9]
print(numbers)  # Исходный список не изменен [5, 2, 9, 1]

Важно помнить, что sort() изменяет оригинальный список, а sorted() возвращает новый отсортированный список, оставляя оригинал неизменным. Используйте sort(), если вам нужно изменить данные на месте, и sorted(), если вы хотите сохранить исходный порядок данных.

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

Иногда бывают нужны сложные сценарии сортировки, или сортировка с игнорированием некоторых параметров. В этом случае нам на помощь приходит «сортировка по ключу». Для его использования нужно передать в метод sort() или функцию sorted() специальный параметр — key.

В качестве значения параметра key нужно передать функцию, которая будет использоваться при сравнении элементов.

Сравнение строк без учета регистра

Перед сравнением все строки приводятся к нижнему регистру


alist = ["banana", "Orange", "Kiwi", "cherry"]
alist.sort(key=str.lower)
print(alist)  # Выведет ['banana', 'cherry', 'Kiwi', 'Orange']

Пример сортировки списка кортежей

Допустим, у вас есть список студентов, где каждый элемент — это кортеж (tuple), содержащий имя студента и его оценку. Вы хотите отсортировать студентов по их оценкам:


students = [('Alice', 88), ('Bob', 75), ('Carol', 96)]

def get_grade(student):
    return student[1]
            
students.sort(key=get_grade)
print(students)  # Выведет [('Bob', 75), ('Alice', 88), ('Carol', 96)]

Пример сортировки списка словарей

Или у вас список словарей, где каждый словарь содержит информацию о студентах. Для того чтобы отсортировать их по оценкам, нужно написать код такого типа:


students = [
    {'name': 'Alice', 'grade': 88},
    {'name': 'Bob', 'grade': 75},
    {'name': 'Carol', 'grade': 96}
]
        
def get_grade(student):
    return student['grade']
        
sorted_students = sorted(students, key=get_grade)
print(sorted_students)  # Выведет [{'name': 'Bob', 'grade': 75}, {'name': 'Alice', 'grade': 88}, {'name': 'Carol', 'grade': 96}]
2
Задача
Модуль 1: Python Core, 5 уровень, 7 лекция
Недоступна
Сортировки
Сортировки
2
Задача
Модуль 1: Python Core, 5 уровень, 7 лекция
Недоступна
Сортировка строк по длине
Сортировка строк по длине
Комментарии (28)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #3526511 Уровень 9
6 февраля 2026
list_str = [input("Введите элемент : ") for i in range(5)] sort = sorted(list_str, key=len)
Anonymous #3526511 Уровень 9
6 февраля 2026
my_list = [random.randint(1, 100) for i in range(10)] print(my_list) my_list.sort() print(my_list) my_list.sort(reverse=True) print(my_list)
Anonymous #1 Уровень 14
6 февраля 2026
сортировка строк по длине: обьясните в чем подвох, я решил задачу в три строки, валидатор все принял, в целом очень легко и интуитивно понятно, но когда залез в правильное решение, а там так все сложно расписано, что как будто мое решение кажется неверным. вот мое: alist = [input() for _ in range(5)] alist.sort(key=len) print(alist)
Anonymous #1 Уровень 14
6 февраля 2026
От приведенных в лекции примеров возник какой то негатив. Захожу в комментарии - и я такой не один (а я то думал что я тупой! хотя и это тоже не исключаем). Видимо к 7 уровню у всех уже подкипело, и эти примеры без какого либо обьяснения порядком надоели. Почему мы используем def, почему там ничего кроме return не происходит, почему мы возвращаем именно единицу, почему не 0, не 22? Почему элементарный материал хоть как то комментируется, а что посложнее - без комментариев. В курсе по джава в самом начале тоже была задачка, от которой подгороло у всех, но как круто она потом обьяснялась, и ссылки на доп лекции были, и рекомендуемая доп литература, где все это в питоне? Не берусь сравнивать с другими площадками, где то еще хуже, где то дороже, плевать. Я знаю как сделан курс джава на джавараш, и вижу как сильно схалтурили в питоне. Ну можете же норм, почему здесь так? Это не какое то пустое недовольство, это реальная обратная связь уже от нескольких людей.
Анатолий Уровень 50
25 января 2026
my_list = [input(f"Введите {i} элемент списка: ") for i in range(5)] def element_len(element): return len(element) my_list.sort(key=element_len) print(my_list)
Анатолий Уровень 50
24 января 2026
Мда..... в примере использование def get_grade(student): return student[1] вылило немного из колеи. Погуглил и стало примерно понятно. Но видимо это темы будущих уроков.
lehaProgromist Уровень 29
5 декабря 2025
qwe
Ilya Shalaev Уровень 10
4 октября 2025
на самом деле как писали до меня ,примеры и вправду в тупую вставлены без особых обьяснений ,лично мне приходится копировать пример ,вбивать его в чат гпт ,он мне там обьясняет и сам я уже подобные делаю в вскоде ,ну это если что то не понятно) а так от курса который в теории стоит 30 тысяч рублей ожидаешь конечно более развернутых обьясняний
Peter Уровень 6
31 августа 2025
Это просто ХУДШИЙ пример на просторах интеренета по объяснению как работает сортировка в конкретном случае. Ни комментариев ни пояснений, ни объяснений, НИЧЕГО!!! С каждой главой я всё больше убеждаюсь, что курс питона в отличии от java делали вчерашние студенты, и то из под палки ради оценки в зачётку. То насколько был составлен грамотно курс в java и тут, это просто небо и земля...

students = [('Alice', 88), ('Bob', 75), ('Carol', 96)]

def get_grade(student):
    return student[1]

students.sort(key=get_grade)
print(students)  # Выведет [('Bob', 75), ('Alice', 88), ('Carol', 96)]
Vlad Уровень 15
10 сентября 2025
А в чем проблема? Key - подразумевает применение Чего-то к каждому элементу списка students = [('Alice', 88)] Функция указывает что условие сортировки будет применяться к второму элементу Кортежа, тоесть, по целочисленному типу Из примера с самого начала я понял что sort - происходит по возрастанию Так же подтвердил это сначала покопавшись в ПайЧарме а позже прочитал об этом на Метаните Допустим, заменим 1 на 0 - в таком случае это была бы сортировка по алфавиту это же происходит если вообще ничего не указывать, просто:

students = [ ('Bob', 75), ('Carol', 96), ('Alice', 88)]
students.sort()

print(students)
Vlad Уровень 15
10 сентября 2025
Для меня проблем в понимании не было, поэтому, был бы рад если бы вы ответили примером который на ваш взгляд являеться хорошим
Peter Уровень 6
15 сентября 2025
Ну значит вы мой дорогой вундеркинд... Удосужился ли автор пояснить что такое key= в этом примере? - НЕТ Увидели что нибудь в пояснении как именно работает функции в целом, получая единственный параметр ПОСЛЕДОВАТЕЛЬНО, но при этом всё равно сортипруя список из,например, миллиона кортежей? - НЕТ Узнали из этого примера что этот пример DSU-схемы? - НЕТ Узнали из этого примера что будет при одинаковых ключах? - НЕТ Тогда у меня возникает закономерный вопрос - для чего вообще нахрен этот пример тут, если он у новичка вызывает миллион вопросов, и не даёт при этом НИ ОДНОГО ответа.... Идеальный пример новичка хотите?? так его уже дали: my_set.sort((5,4,3,2,1)) --> (1,2,3,4,5) - вот идеальный пример. Автор не на собеседовании чтобы понты кидать - это обучающий материал, причём для новичков, а не энциклопедия для продвинутых. Я тоже могу погуглить и оставить здесь без пояснения строку в стиле

students.sort(key=lambda s: s[1]) 
Сидите думайте господа новички, может объясню через 10 уроков после этого.... Бесит именно тот факт - что автор не удосужился пояснить НИ ОДНОЙ СТРОКИ кода, будто всё то, что в коде, проходилось и решалоссь уже не раз...
Vlad Уровень 15
15 сентября 2025
Если я правильно понял ваш комментарий, автор не должен был идти дальше сортировки по ключу, при этом, он не закончив объяснение "ушел в лес" Ясно, я от части привык к тому что в каждой книге по Питону авторы пишут сотни примеров из других языков программирования, ссылаються на разные виды типизации и способы реализации каких то функций и методов, что не обратил на это внимание Посмотрел на пример, протестировал, пошел читать, увидел много информации про Лямбда выражения, ключи, то что было в прошлых версиях и сравнения, закапывания и подумал:"ок, видимо в лекции тот минимум что мне нужен сейчас, вопросы выписал, ответы на них будут дальше"
Vlad Уровень 15
15 сентября 2025
кроме купленного этого курса у меня скачано ещё 7 курсов(Отус, Степик, Юдеми, Яндекс Практикум) - про базовый питон и конкретные специальности(QA, Web, парсинг, разработка интерфейсов, ФуллСтек), но, там всё ещё хуже - часто текстовые лекции представляют из себя 3 абзаца(определения, методы, синтаксис) примеры, вообще без объяснения, например * в этой лекции автор, чтоб не использовать лямбду создал функцию, внешне пример выглядит знакомым * В курсах что у меня скачаны, которые стоят на порядок дороже этого, в блоках с базовой информацией, можно встретить примеры использующие Классы и Функции с бесконечными параметрами Нужно закидывать код в ИИ чтоб он объяснил что вообще происходит, несколько раз оказывалось что код работает, но вообще ничего не делает - в живых лекциях дикторы часто сбиваються с мыслей и путаються, или объясняют небылицы(по типу того что использование констант экономит память)
Vlad Уровень 15
17 сентября 2025
кратко - Лекции здесь может и имеют проблемы, но 1. У курса есть четкий план, снаружи и внутри 2. их удобно гуглить 3. автор периодически пишет сценарии в которых используеться Н-нная функция Впролне себе хороший материал, лучше того базового материала который я видел на Рутрекере, Шервуде, sliv one и даже складчике
Vlad Уровень 15
23 сентября 2025
Степик, я проходил курс поколения Пайтон, задачи с шахматной доской научили меня тому что нужно сначала смотреть на текстовые данные, а потом на условия) https://stepik.org/users/72395800/profile
Peter Уровень 6
25 сентября 2025
Я прошёл этот курс уже полностью(для начинающих) задачи на шахматную доску до сих пор помню)) но помню что на удивление дались мне легко. Если бы в этом курсе задачи были бы написаны так же как на джавараш, этот курс бы так не выстрелил.
Vanil'ka Уровень 25
26 июля 2025
Не могу понять как работает функция sort() с параметром key. Я так понял в неё передается адрес функции в которой один параметр и дальше sort сама подставляет в аргументы функции элемент списка. И похоже функция, которую туда передают должна обязательно что-то возвращать. Короче говоря, совсем не очевидно. Стоило объяснить.