Функция sorted() в Python

Функция sorted() в Python: синтаксис, описание и примеры использования

В Python существует множество методов сортировки, однако функция sorted() является одной из наиболее удобных и распространенных.

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

В этой статье мы рассмотрим основные возможности функции sorted() и примеры ее использования.

Синтаксис

Синтаксис функции sorted() выглядит следующим образом:

sorted(iterable, key=None, reverse=False)

где:

  • iterable (обязательный): коллекция данных, которую нужно отсортировать.
  • key (опциональный): необязательный параметр, который определяет функцию для извлечения ключа для каждого элемента в коллекции. По умолчанию, функция сортирует элементы по возрастанию, но можно указать собственную функцию, которая изменит порядок сортировки.
  • reverse (опциональный): необязательный параметр, который задает порядок сортировки. Если установлено значение True, функция будет сортировать элементы в обратном порядке.

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

Примеры использования

1) Сортировка списка

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

#[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

В данном примере функция sorted() применена к списку чисел. Она отсортировала его по возрастанию и вернула новый список, который был сохранен в переменной sorted_numbers.

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

words = ['banana', 'cherry', 'apple', 'date']
sorted_words = sorted(words, key=len)
print(sorted_words) 

#['date', 'apple', 'banana', 'cherry']

Здесь функция sorted() была применена к списку строк. Мы отсортировали его по длине строк, используя функцию len() в качестве ключа сортировки. Таким образом, на выходе мы получили список, где строки отсортированы по возрастанию их длины.

2) Сортировка словаря

fruit_prices = {'apple': 0.5, 'banana': 0.25, 'cherry': 1.0, 'date': 0.75}
sorted_fruit = sorted(fruit_prices)
print(sorted_fruit) 

#['apple', 'banana', 'cherry', 'date']

Используем функцию sorted() для сортировки ключей словаря fruit_prices. Мы получили отсортированный список ключей, который сохранен в переменной sorted_fruit.

Кроме того, можно использовать параметр key для сортировки словаря по значению, а не по ключу. Для этого можно использовать метод dict.items() для получения пар (ключ, значение) словаря и передать лямбда-функцию, которая будет возвращать значение для каждой пары. Например:

fruit_prices = {'apple': 0.5, 'banana': 0.25, 'cherry': 1.0, 'date': 0.75}
sorted_fruit = sorted(fruit_prices.items(), key=lambda x: x[1])
print(sorted_fruit) 

#[('banana', 0.25), ('apple', 0.5), ('date', 0.75), ('cherry', 1.0)]

Метод dict.items() преобразовал словарь в список кортежей (ключ, значение), которые мы затем сортируем по значению, используя лямбда-функцию.

3) Сортировка кортежа

my_tuple = (3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)
sorted_tuple = sorted(my_tuple)
print(sorted_tuple)

#[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

Здесь мы создали кортеж my_tuple, содержащий несколько элементов, а затем использовали функцию sorted() для создания отсортированной версии этого кортежа. Результатом является новый отсортированный кортеж sorted_tuple.

Также можно отсортировать список кортежей по их второму элементу:

tuples = [(1, 5), (3, 2), (2, 3), (4, 1)]
sorted_tuples = sorted(tuples, key=lambda x: x[1])
print(sorted_tuples)

#[(4, 1), (3, 2), (2, 3), (1, 5)]

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

4) Сортировка множества

Для сортировки множества, можно передать его в качестве аргумента функции sorted():

my_set = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}
sorted_set = sorted(my_set)
print(sorted_set)

#[1, 2, 3, 4, 5, 6, 9]

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

5) Сортировка строки

При сортировке строки, функция sorted() возвращает отсортированный список символов строки.

my_string = "python"
sorted_string = sorted(my_string)
print(sorted_string)

#['h', 'n', 'o', 'p', 't', 'y']

Функция sorted() возвращает список символов, а не строку. Если вы хотите получить отсортированную строку, то можно объединить отсортированный список символов обратно в строку, используя метод join().

Reverse в функции sorted()

Функция sorted() может принимать несколько параметров, включая параметр reverse. Этот параметр управляет порядком сортировки элементов в обратном направлении.

Когда reverse=True, элементы сортируются в порядке убывания, а когда reverse=False (это значение по умолчанию), элементы сортируются в порядке возрастания.

Например, вот как можно отсортировать список чисел в порядке убывания, используя sorted() и параметр reverse:

numbers = [5, 2, 8, 1, 9]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)

#[9, 8, 5, 2, 1]

Заключение

Функция sorted() в Python предоставляет мощный инструмент для сортировки различных типов итерируемых объектов. Она позволяет использовать различные методы сравнения, включая использование пользовательских функций, и может быть использована для сортировки не только списков, но и других итерируемых объектов, таких как кортежи и словари.

Содержание: