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 лекция
Недоступна
Сортировка строк по длине
Сортировка строк по длине
Комментарии (34)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Andrew Уровень 39
23 июня 2026
подскажите пожалуйста! Впервые занялся изучением языков, изучаю пайтон. настроил ИИ как ментора который не решает задачи за меня а помогает их решить, напоминает пройденные темы и подсказывает. Пока путаюсь и кое, что забываю, по этому начиная с 6 уровня решаю задачи только с его помощью. Это норм для начинающего? или лучше заного все зубрить и думать только самому?
Anonymous #3447003 Уровень 17
26 июля 2026
думаю зубрить смысла нет, главное понимать что прочитал, и знать где это примерно достать и как использовать(хоть гугл). По лекциям и гуглу прыгать долго, я для себя, то что не запоминаю, выписываю в файл ворд(примеры кусков кода, методы, разделяю темы по разным файлам как мне удобно, пользуюсь закладками и ссылками на них на первой странице), и при кодинге ими пользуюсь(только не копипастом, а перепечатыванием и доработкой под себя, со временем мозг запомнит самое частое, а то что не запомнит значит не нужно xD, не зря в школе постоянно заставляют писать от руки с доски). насчет ментора с ИИ ничего не могу сказать, но думаю тоже неплохой вариант, но думать лучше все же самому сначало, смотреть на готовые примеры и под себя переделывать.
Andrew Уровень 39
27 июля 2026
Спасибо за ответ) Тоже попробую конспектировать то, что не запоминаю)
Anonymous #6494909 Уровень 1
8 июня 2026
в примере сортируем по нижнему регистру alist = ["banana", "Orange", "Kiwi", "cherry"] alist.sort(key=str.lower) print(alist) # Выведет ['banana', 'cherry', 'Kiwi', 'Orange'] почему сначала 'banana', 'cherry - понятно, нижний регистр. почему потом 'Kiwi', 'Orange', а не "Orange", "Kiwi" - потому что, оказывается, происходит еще одна сортировка, по алфавиту то же самое со следующим примером, где список из кортежей - там тоже под капотом происходит еще одна сортировка по значению
Людмила Уровень 11
12 марта 2026
my_list = [input("Enter a str: ") for k in range(5)] print(my_list) my_list_sorted = sorted(my_list, key=len) print(my_list_sorted)
Людмила Уровень 11
12 марта 2026
import random my_randrange = list(random.randrange(1, 100) for k in range(10)) my_randrange_sorted = sorted(my_randrange) my_randrange_sorted_desc = sorted(my_randrange_sorted, reverse=True) print(my_randrange) print(my_randrange_sorted) print(my_randrange_sorted_desc) такое решение проверку проходит, хотя наверно правильней random.randint(1, 100), т.к. randrange(1, 100) не включает верхнюю границу 🧐
EvgenyXIV Уровень 31
12 марта 2026
Пример сортировки списка словарей - сортируется и "на месте" students.sort(key=get_grade)
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 Уровень 1
6 февраля 2026
сортировка строк по длине: обьясните в чем подвох, я решил задачу в три строки, валидатор все принял, в целом очень легко и интуитивно понятно, но когда залез в правильное решение, а там так все сложно расписано, что как будто мое решение кажется неверным. вот мое: alist = [input() for _ in range(5)] alist.sort(key=len) print(alist)
Anonymous #1 Уровень 1
6 февраля 2026
От приведенных в лекции примеров возник какой то негатив. Захожу в комментарии - и я такой не один (а я то думал что я тупой! хотя и это тоже не исключаем). Видимо к 7 уровню у всех уже подкипело, и эти примеры без какого либо обьяснения порядком надоели. Почему мы используем def, почему там ничего кроме return не происходит, почему мы возвращаем именно единицу, почему не 0, не 22? Почему элементарный материал хоть как то комментируется, а что посложнее - без комментариев. В курсе по джава в самом начале тоже была задачка, от которой подгороло у всех, но как круто она потом обьяснялась, и ссылки на доп лекции были, и рекомендуемая доп литература, где все это в питоне? Не берусь сравнивать с другими площадками, где то еще хуже, где то дороже, плевать. Я знаю как сделан курс джава на джавараш, и вижу как сильно схалтурили в питоне. Ну можете же норм, почему здесь так? Это не какое то пустое недовольство, это реальная обратная связь уже от нескольких людей.
Анатолий Уровень 63
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)