Сортиране на списък на Python ()

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

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