
Функция sorted( ) в Python
Функция sorted( ) в Python
Синтаксис:
sorted(obj)
Функция sorted( ) в Python принимает в себя любой итерируемый объект(списки, строки, множества и т.д) и возвращает новый отсортированный список. Обратите внимание, что функция sorted( ) всегда возвращает вам список объектов.
my_list = [14, 2, 90, 15, 0, 9, 7]
print(sorted(my_list))
[0, 2, 7, 9, 14, 15, 90]
list_of_names = ['Max', 'Anna', 'Sofia', 'Victor', 'Alex']
print(sorted(list_of_names))
['Alex', 'Anna', 'Max', 'Sofia', 'Victor']
Сортировка в обратном порядке
Для сортировки в обратном порядке у функции sorted( ) существует флаг reverse:
my_list = [14, 2, 90, 15, 0, 9, 7]
print(sorted(my_list, reverse=True))
[90, 15, 14, 9, 7, 2, 0]
Сортировка с помощью параметра key
Для сортировки более сложных структур данных, например списка кортежей, у функции sorted( ) есть замечательный параметр key, который может принимать в себя лямбда выражение. Создадим список из нескольких студентов с параметрами имени, класса и возраста:
student_tuples = [
('Alex', 'A', 9),
('Olga', 'C', 16),
('Max', 'B', 12)
]
Если мы вызовем функцию sorted( ) и передадим в неё список, то получим сортировку по именам.
student_tuples = [
('Alex', 'A', 9),
('Olga', 'C', 16),
('Max', 'B', 12)
]
print(sorted(student_tuples))
[('Alex', 'A', 9), ('Max', 'B', 12), ('Olga', 'C', 16)]
Но что если нам нужна сортировка по классу или возрасту? Здесь и проявляет себя параметр key с лямбда выражением:
student_tuples = [
('Alex', 'A', 9),
('Olga', 'C', 16),
('Max', 'B', 12)
]
print(sorted(student_tuples, key=lambda student: student[1]))
[('Alex', 'A', 9), ('Max', 'B', 12), ('Olga', 'C', 16)]
Мы получаем сортировку по индексу параметра который передаём в значение лямбда функции - student[1], в данном случае это класс студента.
- student[0] - имя.
- student[2] - возраст.
Сортировка по возрасту:
student_tuples = [
('Alex', 'A', 9),
('Olga', 'C', 16),
('Max', 'B', 12)
]
print(sorted(student_tuples, key=lambda student: student[2]))
[('Alex', 'A', 9), ('Max', 'B', 12), ('Olga', 'C', 16)]
Добавим третий параметр reverse=True и перевернём сортировку:
student_tuples = [
('Alex', 'A', 9),
('Olga', 'C', 16),
('Max', 'B', 12)
]
print(sorted(student_tuples, key=lambda student: student[2], reverse=True))
[('Olga', 'C', 16), ('Max', 'B', 12), ('Alex', 'A', 9)]
Сортировка значений, одна из самых простых и в тоже время часто встречающихся задач в Python. Теперь вы умеете сортировать итерируемые объекты в естественном и обратном порядке, а так-же знаете как задать свой собственный порядок сортировки более сложным, вложенным объектам в Python.