Метод 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.