Найти в Дзене
IT Start | Python

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

В ходе данной статьи рассмотрим способы сортировки списка в Python. Метод sort() используется для сортировки списка на месте. Это означает, что он изменяет исходный список, а не создает новый. Пример сортировки списка с использованием метода sort(): numbers = [5, 2, 9, 1, 5, 6]
numbers.sort() print(numbers) # Вывод: [1, 2, 5, 5, 6, 9] У данного метода также присутствует два параметра, а именно reverse и key: Пример обратной сортировки списка numbers = [5, 2, 9, 1, 5, 6]
numbers.sort(reverse=True) print(numbers) # Вывод: [9, 6, 5, 5, 2, 1] Пример сортировки списка строк по их длине words = ["яблоко", "груша", "банан", "киви"]
words.sort(key=len) print(words) # Вывод: ['киви', 'груша', 'банан', 'яблоко'] Функция sorted() создаёт новый отсортированный список, оставляя оригинальный без изменений. Пример сортировки списка с использованием функции sorted(): numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers) print(sorted_numbers) # Вывод: [1, 2, 5, 5, 6, 9]
print(numbers) # Вы
Оглавление

Введение

В ходе данной статьи рассмотрим способы сортировки списка в Python.

Встроенные методы сортировки

Использование метода sort()

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

Пример сортировки списка с использованием метода sort():

numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()

print(numbers)

# Вывод: [1, 2, 5, 5, 6, 9]

У данного метода также присутствует два параметра, а именно reverse и key:

  • reverse — по умолчанию принимает значение False. Если его изменить на True, то список будет отсортирован по убыванию
  • key — принимает функцию, которая определяет критерий сортировки.

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

numbers = [5, 2, 9, 1, 5, 6]
numbers.sort(reverse=True)

print(numbers)

# Вывод: [9, 6, 5, 5, 2, 1]

Пример сортировки списка строк по их длине

words = ["яблоко", "груша", "банан", "киви"]
words.sort(key=len)

print(words)

# Вывод: ['киви', 'груша', 'банан', 'яблоко']

Использование функции sorted()

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

Пример сортировки списка с использованием функции sorted():

numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)

print(sorted_numbers) # Вывод: [1, 2, 5, 5, 6, 9]
print(numbers) # Вывод: [5, 2, 9, 1, 5, 6]

Данная функция также поддерживает параметры reverse и key, которые отвечают за то же самое, что и в методе sort().

Использование функции sorted() с параметрами

words = ["яблоко", "груша", "банан", "киви"]
sorted_words = sorted(words, key=len, reverse=True)

print(sorted_words)

# Вывод: ['яблоко', 'груша', 'банан', 'киви']

Пользовательская сортировка

Использование lambda

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

Вот несколько примеров сортировки с использованием lambda:

Сортировка кортежей по второму элементу.

pairs = [(1, 3), (2, 2), (4, 1)]
pairs.sort(key=lambda x: x[1])

print(pairs)

# Вывод: [(4, 1), (2, 2), (1, 3)]

Сортировка списка кортежей по нескольким критериям.

pairs = [(1, 3), (2, 2), (4, 1), (3, 1)]
pairs.sort(key=lambda x: (x[1], x[0])) # Сначала по второму элементу, потом по первому
print(pairs)

# Вывод: [(3, 1), (4, 1), (2, 2), (1, 3)]

Сортировка списка словарей по значению ключа.

students = [{"name": "Анна", "age": 22}, {"name": "Борис", "age": 20}, {"name": "Виктор", "age": 21}]
students.sort(key=lambda x: x["age"])

print(students)

# Вывод: [{'name': 'Борис', 'age': 20}, {'name': 'Виктор', 'age': 21}, {'name': 'Анна', 'age': 22}]

Использование functools.cmp_to_key()

В случаях, когда необходимо определить сложное поведение сортировки, можно воспользоваться функцией cmp_to_key() из модуля functools.

Вот несколько примеров сортировки с использованием функции functools.cmp_to_key():

Сортировка строк по алфавиту без учёта регистра.

from functools import cmp_to_key

def case_insensitive_compare(a, b):
return (a.lower() > b.lower()) - (a.lower() < b.lower()) # Эмуляция работы `str.casefold()`

words = ["яблоко", "Апельсин", "банан", "Груша"]
sorted_words = sorted(words, key=cmp_to_key(case_insensitive_compare))
print(sorted_words)
# Вывод: ['Апельсин', 'банан', 'Груша', 'яблоко']

Сортировка слов по количеству гласных.

from functools import cmp_to_key

def count_vowels(word):
return sum(1 for letter in word if letter in "аеёиоуыэюяАЕЁИОУЫЭЮЯ")

def compare_vowels(a, b):
return count_vowels(a) - count_vowels(b) # По возрастанию количества гласных

words = ["груша", "арбуз", "апельсин", "банан"]
sorted_words = sorted(words, key=cmp_to_key(compare_vowels))

print(sorted_words)
# Вывод: ['груша', 'банан', 'арбуз', 'апельсин']

Заключение

В ходе статьи мы с Вами рассмотрели основные способы сортировки списков в Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Мой Telegram канал

Мой YouTube канал

Курс по созданию телеграм-ботов на Python с фреймворком Aiogram

Мой курс по Python (50 видоуроков + дополнительные уроки)

Курс по созданию GUI на Python