Python List sort(): Подробное руководство по сортировке списков
В этом учебнике вы узнаете, как использовать Python для сортировки списка с помощью метода sort()
. Умение работать со списками является необходимым навыком в Python, учитывая их распространенность. Поскольку списки являются упорядоченными и изменяемыми структурами данных, мы можем изменять их порядок. Метод list.sort()
позволяет вам делать именно это! Этот метод является ценным инструментом, позволяющим сортировать списки многими пользовательскими способами.
К концу этого урока вы узнаете:
Как использовать метод сортировки Python для сортировки списка
Как сортировать по возрастанию, убыванию и индивидуальному порядку
Как сортировать списки списков, списки кортежей и списки словарей
Оглавление
Синтаксис метода sort() для списка Python
Метод sort()
в Python сортирует элементы списка в заданном порядке, включая порядок по возрастанию или убыванию. Метод работает на месте, что означает, что измененный список не нуждается в переназначении для его модификации.
Давайте рассмотрим параметры функции:
Как вы можете видеть в блоке выше, метод имеет два параметра:
key=
определяет функцию с одним аргументом, которая используется для сравнения с другим элементом списка. По умолчанию параметр установлен вNone
, что означает, что элементы списка сортируются напрямую, без вычисления отдельного ключевого значения.reverse=
определяет порядок сортировки значений. По умолчанию аргумент установлен какFalse
, что означает сортировку данных в порядке возрастания.
Метод .sort()
не возвращает никакого значения, но при этом изменяет исходный список напрямую. Если вам нужно сохранить исходный список без изменений и получить новый отсортированный список, то функция sorted()
будет более подходящим выбором.
В следующих разделах вы научитесь использовать метод .sort()
для сортировки значений в списке. Сначала вы узнаете, как сортировать список по возрастанию.
Сортировка списка в Python по возрастанию
В этом разделе вы узнаете, как отсортировать список в порядке возрастания, используя метод .sort()
. По умолчанию метод будет использовать аргумент reverse=False
, что означает, что элементы будут отсортированы по возрастанию. Из-за этого мы можем пропустить ввод этого параметра.
Давайте рассмотрим пример того, как отсортировать список в порядке возрастания на Python:
Мы видим, что значения отсортированы по возрастанию. Одна важная вещь, на которую стоит обратить внимание, это то, что значения сравниваются напрямую.
Это означает, что элементы в списке рассматриваются так, как они есть – заглавные буквы будут следовать за другим порядком сортировки, чем строчные буквы. В разделе настройки порядка сортировки вы узнаете, как изменить это поведение.
В следующем разделе вы узнаете, как отсортировать список в порядке убывания, используя метод .sort()
в Python.
Сортировка списка в Python по убыванию
Так же, как мы можем сортировать список по возрастанию, мы можем сортировать список в Python по убыванию, используя метод .sort()
. Хотя функция по умолчанию будет сортировать список по возрастанию, мы можем изменить это поведение, установив параметр reverse=
в значение True
Давайте посмотрим, как мы можем отсортировать список в обратном порядке, используя метод .sort()
Как было отмечено в предыдущем разделе, заглавные буквы будут обрабатываться иначе. Однако в следующем разделе вы узнаете, как сортировать список в Python в пользовательском порядке.
Сортировка списка в Python в пользовательском порядке с использованием ключа
Метод .sort()
в Python позволяет более тонко настраивать порядок сортировки элементов с использованием параметра key=
. Давайте рассмотрим пример, на который я уже делал намек в двух предыдущих разделах: как обрабатываются заглавные буквы.
Давайте изменим одну букву на заглавную в списке и посмотрим, как это изменит порядок сортировки:
Мы видим, что заглавная буква 'D'
сортируется перед строчными буквами. Это связано с тем, что значения сортируются по их значениям ASCII, где заглавные буквы имеют значения меньше, чем их строчные версии.
Это место, где параметр key=
играет ключевую роль! Мы можем передать в него ключ, который принимает функцию для изменения порядка сортировки. Например, если мы хотим сравнивать все буквы без учета регистра, мы можем передать вызываемый объект str.lower
Давайте посмотрим, как это выглядит:
Мы можем пойти еще дальше, передав в функцию пользовательскую функцию! Предположим, мы хотели бы отсортировать список строк по последней букве, сначала мы можем создать функцию, которая возвращает последнюю букву каждого элемента, переданного в неё.
Давайте рассмотрим пример, как мы можем это сделать:
В следующем разделе вы узнаете, как использовать анонимную лямбда-функцию для определения пользовательского порядка сортировки.
Сортировка списка в Python по пользовательскому порядку с использованием Lambda функций
Во многих случаях вы не будете использовать пользовательскую функцию сортировки снова. Из-за этого имеет смысл использовать анонимную функцию-лямбду. Давайте посмотрим, как мы можем воссоздать метод сортировки выше, используя лямбда
Мы видим, что это имеет ряд ключевых преимуществ:
Оно сокращает количество кода, который нам нужно написать
Мы упрощаем понимание функции сортировки, избегая необходимости переходить к другой строке кода.
В следующих разделах вы научитесь сортировать различные общие структуры списков, такие как списки списков, списки кортежей и списки словарей.
Сортировка списка списков Python
В этом разделе вы научитесь сортировать список списков в Python, используя метод .sort()
. В этом примере мы будем сортировать список списков по их длине по возрастанию (от самого короткого к самому длинному).
Снова, мы можем сделать это, используя параметр key=
и передавая в него вызываемый объект len
. Это позволит сортировать по возвращаемому значению функции len()
, по возрастанию:
Здесь видно, что каждый список отсортирован по его длине, так что более короткие подсписки расположены перед более длинными.
Сортировка списка кортежей в Python
Сортировка списка кортежей в Python аналогична сортировке списка списков. В связи с этим, давайте рассмотрим пример, который показывает, как сортировать, используя другой ключ.
Например, представим, что у нас есть кортеж, который содержит (country, number_of_medals)
, мы можем отсортировать наш список стран по убыванию количества медалей. Давайте посмотрим, как мы можем это сделать:
Мы смогли отсортировать кортежи по числу медалей в порядке убывания, используя анонимную функцию и обратившись к элементу с первым индексом.
Сортировка списка словарей в Python
В этом последнем разделе мы рассмотрим, как отсортировать список словарей. Поскольку словари состоят из пар key:value
, к элементам нельзя обратиться по их индексу. Представьте, что у нас есть следующий словарь:
Если мы хотим отсортировать список людей по их возрасту в порядке возрастания, нам нужно получить доступ к значению по ключу 'Age'
. Сделать это можно, используя метод .get()
Мы можем передать метод .get()
в лямбда-функцию и получить доступ к ключу 'Name'
Заключение
В этом посте вы узнали, как использовать Python для сортировки списков с помощью метода .sort()
. Вы узнали, как работает синтаксис метода сортировки Python. Затем вы узнали, как использовать метод для сортировки элементов списка в порядке возрастания, убывания и собственного порядка. После этого вы узнали, как сортировать списки списков, списки кортежей и списки словарей.
Дополнительные ресурсы
Чтобы узнать больше о смежных темах, ознакомьтесь с учебными пособиями ниже:
Python: сортировка строки (4 разных способа)
Python: сортировка словаря по значениям
Списки Python: полный обзор
Python: преобразование словаря в список кортежей (4 простых способа)
Last updated