Documentation Blog Login SignUp
Menu
Telegram Twitter Instagram Zen
  • Установка Python
    • Установка Python на Linux
    • Установка Python на Windows
  • Виртуальное окружение
    • Виртуальное окружение
  • Типы данных
    • Типы данных в Python
    • Boolean
    • Numbers(Числа)
    • Strings(Строки)
    • Lists(Списки)
    • Tuple(Кортежи)
    • Dict(Словари)
    • Set(Множества)
  • Встроенные функции
    • Встроенные функции
    • Функции преобразования типов
    • abs( )
    • input( )
    • isinstance( )
    • len( )
    • range( )
    • sorted( )
    • type( )
  • Оператор if
    • Оператор if-elif-else

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

July 3, 2020 131 просмотр
Содержание #Функция sorted( ) в Python #Сортировка в обратном порядке#Сортировка с помощью параметра "key"

 

Функция 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.