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

Метод sort () сортирует элементы данного списка в определенном порядке возрастания или убывания.

Синтаксис sort()метода:

 list.sort (ключ =…, обратный =…)

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

 отсортировано (список, ключ =…, обратный =…)

Примечание. Самое простое различие между sort()и sorted()заключается в следующем: sort()изменяет список напрямую и не возвращает никакого значения, а sorted()не изменяет список и возвращает отсортированный список.

sort () Параметры

По умолчанию sort()не требует дополнительных параметров. Однако у него есть два необязательных параметра:

  • reverse - Если True, отсортированный список перевернут (или отсортирован в порядке убывания)
  • key - функция, которая служит ключом для сравнения сортировок

Возвращаемое значение из sort ()

sort()Метод не возвращает никакого значения. Скорее, он меняет исходный список.

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

Пример 1. Сортировка заданного списка

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)

Вывод

 Сортированный список: ('a', 'e', ​​'i', 'o', 'u')

Сортировать по убыванию

sort()Метод принимает reverseпараметр как дополнительный аргумент.

При настройке reverse = Trueсписок сортируется в порядке убывания.

 list.sort(reverse=True)

В качестве альтернативы sorted()вы можете использовать следующий код.

 sorted(list, reverse=True)

Пример 2: отсортировать список в порядке убывания

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)

Вывод

 Сортированный список (по убыванию): ('u', 'o', 'i', 'e', ​​'a')

Сортировка с помощью настраиваемой функции с помощью клавиши

Если вам нужна собственная реализация для сортировки, sort()метод также принимает keyфункцию в качестве необязательного параметра.

По результатам ключевой функции вы можете отсортировать данный список.

 list.sort(key=len)

В качестве альтернативы для сортировки:

 sorted(list, key=len)

Вот lenвстроенная функция Python для подсчета длины элемента.

Список сортируется по длине каждого элемента от наименьшего количества к наибольшему.

Мы знаем, что кортеж по умолчанию сортируется по первому параметру. Давайте посмотрим, как настроить sort()метод сортировки с помощью второго элемента.

Пример 3: отсортировать список с помощью ключа

 # take second element for sort def takeSecond(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key random.sort(key=takeSecond) # print list print('Sorted list:', random)

Вывод

 Отсортированный список: ((4, 1), (2, 2), (1, 3), (3, 4))

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

Мы можем отсортировать список следующим образом:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # custom functions to get employee info def get_name(employee): return employee.get('Name') def get_age(employee): return employee.get('age') def get_salary(employee): return employee.get('salary') # sort by name (Ascending order) employees.sort(key=get_name) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=get_age) print(employees, end='') # sort by salary (Descending order) employees.sort(key=get_salary, reverse=True) print(employees, end='')

Вывод

(('Имя': 'Алан Тьюринг', 'возраст': 25, 'зарплата': 10000), ('Имя': 'Джон Хопкинс', 'возраст': 18, 'зарплата': 1000), ('Имя ':' Михаил Таль ',' возраст ': 40,' зарплата ': 15000), (' Имя ':' Шэрон Лин ',' возраст ': 30,' зарплата ': 8000)) ((' Имя ':' Джон Хопкинс ',' возраст ': 18,' зарплата ': 1000), (' Имя ':' Алан Тьюринг ',' возраст ': 25,' зарплата ': 10000), (' Имя ':' Шэрон Лин ', «возраст»: 30, «зарплата»: 8000), («Имя»: «Михаил Таль», «возраст»: 40, «зарплата»: 15000)) ((«Имя»: «Михаил Таль», «возраст» : 40, 'зарплата': 15000), ('Имя': 'Алан Тьюринг', 'возраст': 25, 'зарплата': 10000), ('Имя ':' Шэрон Лин ',' возраст ': 30,' зарплата ': 8000), (' Имя ':' Джон Хопкинс ',' возраст ': 18,' зарплата ': 1000))

Здесь для первого случая наша настраиваемая функция возвращает имя каждого сотрудника. Поскольку имя - a string, Python по умолчанию сортирует его в алфавитном порядке.

Во втором случае intвозвращается age ( ), который сортируется в порядке возрастания.

В третьем случае функция возвращает salary ( int) и сортируется в порядке убывания с помощью reverse = True.

Рекомендуется использовать лямбда-функцию, когда функция может быть представлена ​​в одной строке. Итак, мы также можем написать указанную выше программу как:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # sort by name (Ascending order) employees.sort(key=lambda x: x.get('Name')) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=lambda x: x.get('age')) print(employees, end='') # sort by salary (Descending order) employees.sort(key=lambda x: x.get('salary'), reverse=True) print(employees, end='')

Вывод

(('Имя': 'Алан Тьюринг', 'возраст': 25, 'зарплата': 10000), ('Имя': 'Джон Хопкинс', 'возраст': 18, 'зарплата': 1000), ('Имя ':' Михаил Таль ',' возраст ': 40,' зарплата ': 15000), (' Имя ':' Шэрон Лин ',' возраст ': 30,' зарплата ': 8000)) ((' Имя ':' Джон Хопкинс ',' возраст ': 18,' зарплата ': 1000), (' Имя ':' Алан Тьюринг ',' возраст ': 25,' зарплата ': 10000), (' Имя ':' Шэрон Лин ', «возраст»: 30, «зарплата»: 8000), («Имя»: «Михаил Таль», «возраст»: 40, «зарплата»: 15000)) ((«Имя»: «Михаил Таль», «возраст» : 40, 'зарплата': 15000), ('Имя': 'Алан Тьюринг', 'возраст': 25, 'зарплата': 10000), ('Имя ':' Шэрон Лин ',' возраст ': 30,' зарплата ': 8000), (' Имя ':' Джон Хопкинс ',' возраст ': 18,' зарплата ': 1000))

Чтобы узнать больше о лямбда-функциях, посетите Python Lambda Functions.

Интересные статьи...