Методът sort () сортира елементите на даден списък в определен възходящ или низходящ ред.
Синтаксисът на sort()метода е:
list.sort (ключ = …, обратно = …)
Като алтернатива можете също да използвате вградената в Python функция sorted () за същата цел.
сортирано (списък, ключ = …, обратно = …)
Забележка: Най-простата разлика между sort()и sorted()е: sort()променя директно списъка и не връща никаква стойност, докато sorted()не променя списъка и връща сортирания списък.
сортиране () Параметри
По подразбиране sort()не изисква допълнителни параметри. Той обаче има два незадължителни параметъра:
- обратен - Ако
Trueсортираният списък е обърнат (или сортиран в низходящ ред) - ключ - функция, която служи като ключ за сравнение на сортирането
Връщане на стойност от 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) се връща и се сортира във възходящ ред.
За третия случай функцията връща заплатата ( 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.








