Как работает sorted в python: полное руководство с примерами 🐍
sorted() в Python является встроенной функцией для сортировки элементов в итерируемом объекте или контейнере. Она возвращает новый отсортированный список, не изменяя исходный.
Функция sorted() может принимать несколько аргументов, но основные два - это итерируемый объект и необязательный параметр key, который определяет функцию, используемую для получения ключа сортировки для каждого элемента.
Вот пример использования sorted() для сортировки списка целых чисел:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
Результатом будет [1, 1, 2, 3, 4, 5, 5, 6, 9].
Вы также можете использовать параметр key для определения пользовательской функции сортировки. Например, для сортировки списка строк по их длине:
fruits = ['apple', 'banana', 'cherry', 'date']
sorted_fruits = sorted(fruits, key=len)
print(sorted_fruits)
Результатом будет ['date', 'apple', 'cherry', 'banana'], так как 'date' имеет самую длинную длину среди всех строк.
Детальный ответ
Как работает sorted в Python?
Функция sorted()
в Python используется для сортировки элементов в списке или итерируемом объекте. Она возвращает новый отсортированный список, оставляя исходный список неизменным. Позвольте мне детально объяснить, как работает эта функция.
Начнем с синтаксиса:
sorted(iterable, key=None, reverse=False)
Здесь:
iterable
- список, кортеж, множество или любой другой итерируемый объект, который нужно отсортировать.key
(необязательный) - функция, используемая для создания пользовательского порядка сортировки. По умолчанию равенNone
.reverse
(необязательный) - если значение равноTrue
, то элементы сортируются в обратном порядке. По умолчанию равноFalse
.
Теперь давайте рассмотрим основные принципы работы sorted()
:
- Функция
sorted()
создает новый список, содержащий отсортированные элементы из исходного списка или итерируемого объекта. Исходный список остается без изменений. - Если не указан аргумент
key
, элементы сортируются с использованием стандартного порядка сортировки в Python (например, числа сортируются по возрастанию, строки сортируются в лексикографическом порядке). - Если указан аргумент
key
, он должен быть функцией, которая принимает один аргумент и возвращает ключ сортировки для каждого элемента. Функцияkey
позволяет определять пользовательский порядок сортировки. - Если аргумент
reverse
равенTrue
, элементы сортируются в обратном порядке (например, по убыванию для чисел или в обратном лексикографическом порядке для строк).
Давайте рассмотрим несколько примеров кода, чтобы проиллюстрировать работу функции sorted()
:
Пример 1: Сортировка списка чисел
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
Вывод:
[1, 1, 2, 3, 4, 5, 5, 6, 9]
Этот пример сортирует список чисел [3, 1, 4, 1, 5, 9, 2, 6, 5]
в порядке возрастания и выводит отсортированный список [1, 1, 2, 3, 4, 5, 5, 6, 9]
.
Пример 2: Сортировка списка строк
fruits = ['apple', 'banana', 'cherry', 'date']
sorted_fruits = sorted(fruits, reverse=True)
print(sorted_fruits)
Вывод:
['date', 'cherry', 'banana', 'apple']
В этом примере список строк ['apple', 'banana', 'cherry', 'date']
сортируется в обратном лексикографическом порядке (по убыванию), и выводится отсортированный список ['date', 'cherry', 'banana', 'apple']
.
Пример 3: Сортировка списка словарей по ключу
students = [
{'name': 'Alice', 'age': 20},
{'name': 'Bob', 'age': 18},
{'name': 'Charlie', 'age': 22}
]
sorted_students = sorted(students, key=lambda student: student['age'])
print(sorted_students)
Вывод:
[ {'name': 'Bob', 'age': 18}, {'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 22} ]
В этом примере список словарей students
сортируется по ключу 'age'
. Мы используем аргумент key
с лямбда-функцией для извлечения значения ключа 'age'
для каждого студента при сортировке. Результатом является отсортированный список словарей по возрастанию.
Теперь, когда вы понимаете, как работает функция sorted()
в Python, вы можете использовать ее для сортировки списков и других итерируемых объектов в своих программах.