Zoradenie zoznamu Python ()

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.

Zaujímavé články...