Python List sort(): Подробное руководство по сортировке списков

В этом учебнике вы узнаете, как использовать Python для сортировки списка с помощью метода sort(). Умение работать со списками является необходимым навыком в Python, учитывая их распространенность. Поскольку списки являются упорядоченными и изменяемыми структурами данных, мы можем изменять их порядок. Метод list.sort() позволяет вам делать именно это! Этот метод является ценным инструментом, позволяющим сортировать списки многими пользовательскими способами.

К концу этого урока вы узнаете:

  • Как использовать метод сортировки Python для сортировки списка

  • Как сортировать по возрастанию, убыванию и индивидуальному порядку

  • Как сортировать списки списков, списки кортежей и списки словарей

Оглавление

Синтаксис метода sort() для списка Python

Метод sort() в Python сортирует элементы списка в заданном порядке, включая порядок по возрастанию или убыванию. Метод работает на месте, что означает, что измененный список не нуждается в переназначении для его модификации.

Давайте рассмотрим параметры функции:

Как вы можете видеть в блоке выше, метод имеет два параметра:

  1. key= определяет функцию с одним аргументом, которая используется для сравнения с другим элементом списка. По умолчанию параметр установлен в None, что означает, что элементы списка сортируются напрямую, без вычисления отдельного ключевого значения.

  2. 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 функций

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

Мы видим, что это имеет ряд ключевых преимуществ:

  1. Оно сокращает количество кода, который нам нужно написать

  2. Мы упрощаем понимание функции сортировки, избегая необходимости переходить к другой строке кода.

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

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

В этом разделе вы научитесь сортировать список списков в Python, используя метод .sort(). В этом примере мы будем сортировать список списков по их длине по возрастанию (от самого короткого к самому длинному).

Снова, мы можем сделать это, используя параметр key= и передавая в него вызываемый объект len. Это позволит сортировать по возвращаемому значению функции len(), по возрастанию:

Здесь видно, что каждый список отсортирован по его длине, так что более короткие подсписки расположены перед более длинными.

Сортировка списка кортежей в Python

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

Например, представим, что у нас есть кортеж, который содержит (country, number_of_medals), мы можем отсортировать наш список стран по убыванию количества медалей. Давайте посмотрим, как мы можем это сделать:

Мы смогли отсортировать кортежи по числу медалей в порядке убывания, используя анонимную функцию и обратившись к элементу с первым индексом.

Сортировка списка словарей в Python

В этом последнем разделе мы рассмотрим, как отсортировать список словарей. Поскольку словари состоят из пар key:value, к элементам нельзя обратиться по их индексу. Представьте, что у нас есть следующий словарь:

Если мы хотим отсортировать список людей по их возрасту в порядке возрастания, нам нужно получить доступ к значению по ключу 'Age'. Сделать это можно, используя метод .get()

Мы можем передать метод .get() в лямбда-функцию и получить доступ к ключу 'Name'

Заключение

В этом посте вы узнали, как использовать Python для сортировки списков с помощью метода .sort(). Вы узнали, как работает синтаксис метода сортировки Python. Затем вы узнали, как использовать метод для сортировки элементов списка в порядке возрастания, убывания и собственного порядка. После этого вы узнали, как сортировать списки списков, списки кортежей и списки словарей.

Дополнительные ресурсы

Чтобы узнать больше о смежных темах, ознакомьтесь с учебными пособиями ниже:

Последнее обновление