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
Trueje 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 reverseparameter ako voliteľného argumentu.
Nastavenie reverse = Truezoradí 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 keyfunkciu 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 lenje 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 intsa 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.








