Metoda sort () třídí prvky daného seznamu v konkrétním vzestupném nebo sestupném pořadí.
Syntaxe sort()metody je:
list.sort (klíč =…, vzad =…)
Alternativně můžete ke stejnému účelu použít také vestavěnou funkci seřazené () Pythonu.
seřazeno (seznam, klíč =…, vzad =…)
Poznámka: Nejjednodušší rozdíl mezi sort()a sorted()je: sort()změní seznam přímo a nevrátí žádnou hodnotu, zatímco sorted()nezmění seznam a vrátí seřazený seznam.
Parametry sort ()
Ve výchozím nastavení sort()nevyžaduje žádné další parametry. Má však dva volitelné parametry:
- reverzní - Pokud
Trueje seřazený seznam obrácen (nebo seřazen sestupně) - klíč - funkce, která slouží jako klíč pro porovnání řazení
Vrátit hodnotu z sort ()
sort()Metoda nevrací žádnou hodnotu. Spíše změní původní seznam.
Chcete-li, aby funkce místo seřazeného seznamu vrátila seřazený seznam, použijte sorted().
Příklad 1: Řazení daného seznamu
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)
Výstup
Řazený seznam: ('a', 'e', 'i', 'o', 'u')
Řadit sestupně
sort()Metoda přijímá reverseparametr jako volitelného argumentu.
Nastavení reverse = Trueseřadí seznam v sestupném pořadí.
list.sort(reverse=True)
Alternativně pro sorted()můžete použít následující kód.
sorted(list, reverse=True)
Příklad 2: Seřadit seznam v sestupném pořadí
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)
Výstup
Řazený seznam (sestupně): ('u', 'o', 'i', 'e', 'a')
Řazení pomocí vlastní funkce pomocí klávesy
Pokud chcete vlastní implementaci pro třídění, sort()metoda také přijímá keyfunkci jako volitelný parametr.
Na základě výsledků klíčové funkce můžete daný seznam seřadit.
list.sort(key=len)
Alternativně pro tříděné:
sorted(list, key=len)
Zde lenje zabudovaná funkce Pythonu pro počítání délky prvku.
Seznam je seřazen podle délky každého prvku, od nejnižšího počtu po nejvyšší.
Víme, že n-tice je ve výchozím nastavení tříděna podle prvního parametru. Pojďme se podívat na to, jak přizpůsobit sort()metodu řazení pomocí druhého prvku.
Příklad 3: Seřadit seznam pomocí klávesy
# 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)
Výstup
Řazený seznam: ((4, 1), (2, 2), (1, 3), (3, 4))
Vezměme si další příklad. Předpokládejme, že máme seznam informací o zaměstnancích kanceláře, kde každý prvek je slovník.
Seznam můžeme seřadit následujícím způsobem:
# 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='')
Výstup
(('' Jméno ':' Alan Turing ',' věk ': 25,' plat ': 10 000), (' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000), (' Jméno ':' Michail Tal ',' věk ': 40,' plat ': 15000), (' Jméno ':' Sharon Lin ',' věk ': 30,' plat ': 8000)) ((' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000), (' Jméno ':' Alan Turing ',' věk ': 25,' plat ': 10 000), (' Jméno ':' Sharon Lin ', 'age': 30, 'plate': 8000), ('Name': 'Michail Tal', 'age': 40, 'plate': 15000)) (('Name': 'Michail Tal', 'age' : 40, 'plat': 15000), ('Jméno': 'Alan Turing', 'věk': 25, 'plat': 10 000), ('Jméno ':' Sharon Lin ',' věk ': 30,' plat ': 8000), (' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000))
Tady v prvním případě vrátí naše vlastní funkce jméno každého zaměstnance. Jelikož se jedná o název string, Python ho standardně třídí podle abecedního pořadí.
V druhém případě intse vrátí age ( ) a seřadí se vzestupně.
Ve třetím případě funkce vrací plat ( int) a je tříděna v sestupném pořadí pomocí reverse = True.
Je dobré použít funkci lambda, když lze funkci shrnout do jednoho řádku. Výše uvedený program tedy můžeme napsat také jako:
# 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='')
Výstup
(('' Jméno ':' Alan Turing ',' věk ': 25,' plat ': 10 000), (' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000), (' Jméno ':' Michail Tal ',' věk ': 40,' plat ': 15000), (' Jméno ':' Sharon Lin ',' věk ': 30,' plat ': 8000)) ((' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000), (' Jméno ':' Alan Turing ',' věk ': 25,' plat ': 10 000), (' Jméno ':' Sharon Lin ', 'age': 30, 'plate': 8000), ('Name': 'Michail Tal', 'age': 40, 'plate': 15000)) (('Name': 'Michail Tal', 'age' : 40, 'plat': 15000), ('Jméno': 'Alan Turing', 'věk': 25, 'plat': 10 000), ('Jméno ':' Sharon Lin ',' věk ': 30,' plat ': 8000), (' Jméno ':' John Hopkins ',' věk ': 18,' plat ': 1000))
Další informace o funkcích lambda najdete na stránkách Python Lambda Functions.








