> For the complete documentation index, see [llms.txt](https://bemind.gitbook.io/neural/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bemind.gitbook.io/neural/python/python-lists/python-list-sort-podrobnoe-rukovodstvo-po-sortirovke-spiskov.md).

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

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

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

* Как использовать метод сортировки Python для сортировки списка
* Как сортировать по возрастанию, убыванию и индивидуальному порядку
* Как сортировать списки списков, списки кортежей и списки словарей

Оглавление

* [Синтаксис метода sort() для списка Python](#sintaksis-metoda-sort-dlya-spiska-python)
* [Сортировка списка Python в порядке возрастания](#sortirovka-spiska-v-python-po-vozrastaniyu)
* [Сортировка списка Python в порядке убывания](#sortirovka-spiska-v-python-po-ubyvaniyu)
* [Сортировка списка Python в индивидуальном порядке с помощью ключа](#sortirovka-spiska-v-python-v-polzovatelskom-poryadke-s-ispolzovaniem-klyucha)
* [Сортировка списка Python в произвольном порядке с помощью Lambda](#sortirovka-spiska-v-python-po-polzovatelskomu-poryadku-s-ispolzovaniem-lambda-funkcii)
* [Сортировка списка списков Python](#sortirovka-spiska-spiskov-python)
* [Сортировка списка кортежей Python](#sortirovka-spiska-kortezhei-v-python)
* [Сортировка списка словарей Python](#sortirovka-spiska-slovarei-v-python)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

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

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

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

```python
# Параметры метода .sort()
list.sort(
    key=None,  # Функция, определяющая ключ сортировки (по умолчанию None)
    reverse=False  # Если True, сортировка происходит в обратном порядке (по умолчанию False)
)
```

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

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

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

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

### Сортировка списка в Python по возрастанию

В этом разделе вы узнаете, как отсортировать список в порядке возрастания, используя метод `.sort()`. По умолчанию метод будет использовать аргумент `reverse=False`, что означает, что элементы будут отсортированы по возрастанию. Из-за этого мы можем пропустить ввод этого параметра.

Давайте рассмотрим пример того, как отсортировать список в порядке возрастания на Python:

```python
# Сортировка списка в порядке возрастания
name = ['d', 'a', 't', 'a', 'g', 'y']
name.sort()  # Сортирует список name в порядке возрастания
print(name)  # Выводит отсортированный список

# Возвращает:
# ['a', 'a', 'd', 'g', 't', 'y']
```

Мы видим, что значения отсортированы по возрастанию. Одна важная вещь, на которую стоит обратить внимание, это то, что значения сравниваются напрямую.

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

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

### Сортировка списка в Python по убыванию

Так же, как мы можем сортировать список по возрастанию, мы можем сортировать список в Python по убыванию, используя метод `.sort()`. Хотя функция по умолчанию будет сортировать список по возрастанию, мы можем изменить это поведение, установив параметр `reverse=` в значение `True`

Давайте посмотрим, как мы можем отсортировать список в обратном порядке, используя метод `.sort()`

```python
# Сортировка списка в порядке убывания
name = ['d', 'a', 't', 'a', 'g', 'y']
name.sort(reverse=True)  # Сортирует список name в порядке убывания
print(name)  # Выводит отсортированный список

# Возвращает:
# ['y', 't', 'g', 'd', 'a', 'a']
```

Как было отмечено в предыдущем разделе, заглавные буквы будут обрабатываться иначе. Однако в следующем разделе вы узнаете, как сортировать список в Python в пользовательском порядке.

### Сортировка списка в Python в пользовательском порядке с использованием ключа

Метод `.sort()` в Python позволяет более тонко настраивать порядок сортировки элементов с использованием параметра `key=`. Давайте рассмотрим пример, на который я уже делал намек в двух предыдущих разделах: как обрабатываются заглавные буквы.

Давайте изменим одну букву на заглавную в списке и посмотрим, как это изменит порядок сортировки:

```python
# Порядок сортировки с учетом заглавных букв
name = ['D', 'a', 't', 'a', 'g', 'y']
name.sort()  # Сортирует список name в порядке возрастания
print(name)  # Выводит отсортированный список

# Возвращает:
# ['D', 'a', 'a', 'g', 't', 'y']
```

Мы видим, что заглавная буква `'D'` сортируется перед строчными буквами. Это связано с тем, что значения сортируются по их значениям ASCII, где заглавные буквы имеют значения меньше, чем их строчные версии.

Это место, где параметр `key=` играет ключевую роль! Мы можем передать в него ключ, который принимает функцию для изменения порядка сортировки. Например, если мы хотим сравнивать все буквы без учета регистра, мы можем передать вызываемый объект `str.lower`

Давайте посмотрим, как это выглядит:

```python
# Сортировка списка букв с различным использованием заглавных букв
name = ['D', 'a', 't', 'a', 'g', 'y']
name.sort(key=str.lower)  # Сортирует список name с игнорированием регистра
print(name)  # Выводит отсортированный список

# Возвращает:
# ['a', 'a', 'D', 'g', 't', 'y']
```

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

Давайте рассмотрим пример, как мы можем это сделать:

```python
# Сортировка списка с помощью пользовательской функции
words = ['apple', 'banana', 'grapefruit', 'plum']

def get_last(word):
    return word[-1]

words.sort(key=get_last)  # Сортирует список words по последней букве каждого слова
print(words)  # Выводит отсортированный список

# Возвращает:
# ['banana', 'apple', 'plum', 'grapefruit']
```

В следующем разделе вы узнаете, как использовать анонимную лямбда-функцию для определения пользовательского порядка сортировки.

### Сортировка списка в Python по пользовательскому порядку с использованием Lambda функций

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

```python
# Сортировка списка с использованием лямбда-функции
words = ['apple', 'banana', 'grapefruit', 'plum']

words.sort(key=lambda x: x[-1])  # Сортирует список words по последней букве каждого слова
print(words)  # Выводит отсортированный список

# Возвращает:
# ['banana', 'apple', 'plum', 'grapefruit']
```

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

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

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

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

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

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

```python
# Сортировка списка списков по их длине
lists = [[1, 2, 3], [4, 5], [6], [7, 8, 9, 10]]
lists.sort(key=len)  # Сортирует список lists по длине каждого вложенного списка
print(lists)  # Выводит отсортированный список

# Возвращает:
# [[6], [4, 5], [1, 2, 3], [7, 8, 9, 10]]
```

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

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

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

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

```python
# Сортировка списка кортежей
countries = [('Spain', 10), ('Portugal', 3), ('Italy', 5), ('Germany', 23), ('France', 12)]
countries.sort(key=lambda x: x[1], reverse=True)  # Сортирует список countries по второму элементу каждого кортежа в обратном порядке
print(countries)  # Выводит отсортированный список

# Возвращает:
# [('Germany', 23), ('France', 12), ('Spain', 10), ('Italy', 5), ('Portugal', 3)]
```

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

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

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

```python
# Список словарей, содержащих информацию о людях
people = [
    {'Name': 'Nik', 'Age': '33', 'City': 'London'}, 
    {'Name': 'Kate', 'Age': '32', 'City': 'Paris'}, 
    {'Name': 'Mike', 'Age': '23', 'City': 'Berlin'}]
```

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

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

```python
# Сортировка списка словарей по значению
people = [
    {'Name': 'Nik', 'Age': '33', 'City': 'London'}, 
    {'Name': 'Kate', 'Age': '32', 'City': 'Paris'}, 
    {'Name': 'Mike', 'Age': '23', 'City': 'Berlin'}]

people.sort(key=lambda x: x.get('Name'))  # Сортирует список people по значению ключа 'Name' в каждом словаре
print(people)  # Выводит отсортированный список

# Возвращает:
# [{'Name': 'Kate', 'Age': '32', 'City': 'Paris'}, 
# {'Name': 'Mike', 'Age': '23', 'City': 'Berlin'}, 
# {'Name': 'Nik', 'Age': '33', 'City': 'London'}]
```

### Заключение

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

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

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

* Python: сортировка строки (4 разных способа)
* Python: сортировка словаря по значениям
* Списки Python: полный обзор
* Python: преобразование словаря в список кортежей (4 простых способа)
* [Сортировка списка Python – официальная документация](https://docs.python.org/3/howto/sorting.html)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bemind.gitbook.io/neural/python/python-lists/python-list-sort-podrobnoe-rukovodstvo-po-sortirovke-spiskov.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
