Metóda sort () triedi prvky daného zoznamu v konkrétnom vzostupnom alebo zostupnom poradí.
Syntax sort()
metódy je:
list.sort (key = …, reverse = …)
Prípadne môžete na ten istý účel použiť aj vstavanú funkciu Python zabudovanú ().
zoradené (zoznam, kľúč = …, spät = =)
Poznámka: Najjednoduchší rozdiel medzi sort()
a sorted()
je: sort()
zmení zoznam priamo a nevráti žiadnu hodnotu, zatiaľ čo sorted()
nezmení zoznam a vráti zoradený zoznam.
Parametre sort ()
V predvolenom nastavení sort()
nevyžaduje žiadne ďalšie parametre. Má však dva voliteľné parametre:
- obrátiť - Ak
True
je zoradený zoznam obrátený (alebo zoradený zostupne) - kľúč - funkcia, ktorá slúži ako kľúč na porovnanie triedenia
Vrátiť hodnotu z sort ()
sort()
Metóda nevracia žiadnu hodnotu. Namiesto toho mení pôvodný zoznam.
Ak chcete, aby funkcia namiesto zoradenia pôvodného zoznamu vrátila zoradený zoznam, použite sorted()
.
Príklad 1: Zoradenie daného zoznamu
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)
Výkon
Zoradený zoznam: ('a', 'e', 'i', 'o', 'u')
Zoradiť zostupne
sort()
Metóda prijíma reverse
parameter ako voliteľného argumentu.
Nastavenie reverse = True
zoradí zoznam v zostupnom poradí.
list.sort(reverse=True)
Alternatívne pre sorted()
môžete použiť nasledujúci kód.
sorted(list, reverse=True)
Príklad 2: Zoraďte zoznam v zostupnom poradí
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)
Výkon
Zoradený zoznam (zostupne): ('u', 'o', 'i', 'e', 'a')
Triediť pomocou vlastných funkcií pomocou klávesu
Ak chcete na triedenie vlastnú implementáciu, sort()
metóda prijíma key
funkciu aj ako voliteľný parameter.
Na základe výsledkov kľúčovej funkcie môžete daný zoznam triediť.
list.sort(key=len)
Alternatívne pre triedené:
sorted(list, key=len)
Tu len
je zabudovaná funkcia Pythonu na počítanie dĺžky prvku.
Zoznam je zoradený podľa dĺžky každého prvku od najnižšieho po najvyšší.
Vieme, že n-tica je predvolene triedená podľa prvého parametra. Pozrime sa na to, ako prispôsobiť sort()
metódu triedenia pomocou druhého prvku.
Príklad 3: Zoraďte zoznam pomocou klávesu
# 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ýkon
Zoradený zoznam: ((4, 1), (2, 2), (1, 3), (3, 4))
Zoberme si ďalší príklad. Predpokladajme, že máme zoznam informácií o zamestnancoch v kancelárii, kde každý prvok predstavuje slovník.
Zoznam môžeme zoradiť nasledujúcim spôsobom:
# 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ýkon
(((„Meno“: „Alan Turing“, „vek“: 25, „plat“: 10 000), („Meno„: „John Hopkins“, „vek“: 18, „plat“: 1000), („Meno ':' Michail Tal ',' vek ': 40,' plat ': 15000), (' Meno ':' Sharon Lin ',' vek ': 30,' plat ': 8000)) ((' Meno ':' John Hopkins ',' vek ': 18,' plat ': 1000), (' Meno ':' Alan Turing ',' vek ': 25,' plat ': 10 000), (' Meno ':' Sharon Lin ', „vek“: 30, „plat“: 8000), („Meno“: „Michail Tal“, „vek“: 40, „plat“: 15000)) ((„Meno“: „Michail Tal“, „vek“) : 40, 'plat': 15000), ('Meno': 'Alan Turing', 'vek': 25, 'plat': 10 000), ('Meno ':' Sharon Lin ',' vek ': 30,' plat ': 8000), (' Meno ':' John Hopkins ',' vek ': 18,' plat ': 1000))
V prvom prípade naša vlastná funkcia vráti meno každého zamestnanca. Keďže sa jedná o názov string
, Python ho predvolene triedi podľa abecedného poradia.
V druhom prípade int
sa vráti age ( ) a zoradí sa vzostupne.
Pre tretí prípad funkcia vráti plat ( int
) a je zoradená zostupne pomocou reverse = True
.
Je dobrým zvykom používať funkciu lambda, keď je možné funkciu zhrnúť do jedného riadku. Vyššie uvedený program teda môžeme napísať aj ako:
# 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ýkon
(((„Meno“: „Alan Turing“, „vek“: 25, „plat“: 10 000), („Meno„: „John Hopkins“, „vek“: 18, „plat“: 1000), („Meno ':' Michail Tal ',' vek ': 40,' plat ': 15000), (' Meno ':' Sharon Lin ',' vek ': 30,' plat ': 8000)) ((' Meno ':' John Hopkins ',' vek ': 18,' plat ': 1000), (' Meno ':' Alan Turing ',' vek ': 25,' plat ': 10 000), (' Meno ':' Sharon Lin ', „vek“: 30, „plat“: 8000), („Meno“: „Michail Tal“, „vek“: 40, „plat“: 15000)) ((„Meno“: „Michail Tal“, „vek“) : 40, 'plat': 15000), ('Meno': 'Alan Turing', 'vek': 25, 'plat': 10 000), ('Meno ':' Sharon Lin ',' vek ': 30,' plat ': 8000), (' Meno ':' John Hopkins ',' vek ': 18,' plat ': 1000))
Ak sa chcete dozvedieť viac informácií o funkciách lambda, navštívte Python Lambda Functions.