Metode sort () sakārto noteiktā saraksta elementus noteiktā augošā vai dilstošā secībā.
Metodes sintakse sort()
ir šāda:
list.sort (atslēga =…, reversa =…)
Alternatīvi, šim nolūkam varat izmantot arī Python iebūvēto sorted () funkciju.
kārtots (saraksts, atslēga =…, reversa =…)
Piezīme: Vienkāršākā atšķirība starp sort()
un sorted()
ir: sort()
maina sarakstu tieši un neatgriež vērtību, savukārt sorted()
nemaina sarakstu un atgriež sakārtoto sarakstu.
sort () Parametri
Pēc noklusējuma sort()
nav nepieciešami papildu parametri. Tomēr tam ir divi izvēles parametri:
- reverse - Ja
True
, sakārtotais saraksts tiek mainīts (vai sakārtots dilstošā secībā) - atslēga - funkcija, kas kalpo kā atslēga šķirošanas salīdzināšanai
Atgriezt vērtību no kārtošanas ()
sort()
Metode neatgriež nekādu vērtību. Drīzāk tas maina sākotnējo sarakstu.
Ja vēlaties, lai funkcija atgrieztu sakārtoto sarakstu, nevis mainītu sākotnējo sarakstu, izmantojiet sorted()
.
1. piemērs: kārtojiet norādīto sarakstu
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)
Rezultāts
Kārtots saraksts: ('a', 'e', 'i', 'o', 'u')
Kārtot dilstošā secībā
sort()
Metode pieņem reverse
parametru kā izvēles arguments.
Iestatījums reverse = True
sakārto sarakstu dilstošā secībā.
list.sort(reverse=True)
Varat arī sorted()
izmantot šādu kodu.
sorted(list, reverse=True)
2. piemērs: kārtojiet sarakstu dilstošā secībā
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)
Rezultāts
Kārtots saraksts (dilstošā secībā): ('u', 'o', 'i', 'e', 'a')
Kārtot, izmantojot pielāgoto funkciju, izmantojot taustiņu
Ja vēlaties, lai jūsu kārtojums tiktu kārtots, sort()
metode key
kā izvēles parametru pieņem arī funkciju.
Pamatojoties uz galvenās funkcijas rezultātiem, jūs varat kārtot norādīto sarakstu.
list.sort(key=len)
Alternatīvi šķirot:
sorted(list, key=len)
Šeit len
ir Python iebūvētā funkcija, lai uzskaitītu elementa garumu.
Saraksts ir sakārtots, pamatojoties uz katra elementa garumu, sākot no mazākā līdz augstākajam.
Mēs zinām, ka kopa pēc noklusējuma tiek kārtota, izmantojot tā pirmo parametru. Apskatīsim, kā pielāgot sort()
metodi, lai kārtotu, izmantojot otro elementu.
3. piemērs: kārtojiet sarakstu, izmantojot taustiņu
# 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)
Rezultāts
Kārtots saraksts: ((4, 1), (2, 2), (1, 3), (3, 4))
Ņemsim vēl vienu piemēru. Pieņemsim, ka mums ir informācijas saraksts par biroja darbiniekiem, kur katrs elements ir vārdnīca.
Sarakstu varam kārtot šādi:
# 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='')
Rezultāts
((“Vārds”: “Alans Tūrings”, “Vecums”: 25, “Alga”: 10000), (“Vārds”: “Džons Hopkinss”, “Vecums”: 18, “Alga”: 1000), (“Vārds ':' Mihails Tals ',' vecums ': 40,' alga ': 15000), (' vārds ':' Sharon Lin ',' vecums ': 30,' alga ': 8000)) ((' vārds ':' Džons Hopkinss, “vecums”: 18, “alga”: 1000), (“vārds”: “Alans Tūrings”, “vecums”: 25, “alga”: 10000), (“vārds”: “Sharon Lin”, "vecums": 30, "alga": 8000), ("vārds": "Mihails Tal", "vecums": 40, "alga": 15000)) (("vārds": "Mihails Tal", "vecums") : 40, “alga”: 15000), (“Vārds”: “Alans Tūrings”, “Vecums”: 25, “Alga”: 10000), (”Vārds ':' Sharon Lin ',' vecums ': 30,' alga ': 8000), (' Vārds ':' John Hopkins ',' vecums ': 18,' alga ': 1000))
Pirmajā gadījumā mūsu pielāgotā funkcija atgriež katra darbinieka vārdu. Tā kā nosaukums ir a string
, Python pēc noklusējuma to kārto, izmantojot alfabētisko secību.
Otrajā gadījumā vecums ( int
) tiek atgriezts un sakārtots augošā secībā.
Trešajā gadījumā funkcija atgriež algu ( int
) un tiek sakārtota dilstošā secībā, izmantojot reverse = True
.
Laba lambda funkcijas izmantošana ir laba prakse, ja funkciju var apkopot vienā rindā. Tātad, mēs varam arī uzrakstīt iepriekš minēto programmu kā:
# 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='')
Rezultāts
((“Vārds”: “Alans Tūrings”, “Vecums”: 25, “Alga”: 10000), (“Vārds”: “Džons Hopkinss”, “Vecums”: 18, “Alga”: 1000), (“Vārds ':' Mihails Tals ',' vecums ': 40,' alga ': 15000), (' vārds ':' Sharon Lin ',' vecums ': 30,' alga ': 8000)) ((' vārds ':' Džons Hopkinss, “vecums”: 18, “alga”: 1000), (“vārds”: “Alans Tūrings”, “vecums”: 25, “alga”: 10000), (“vārds”: “Sharon Lin”, "vecums": 30, "alga": 8000), ("vārds": "Mihails Tal", "vecums": 40, "alga": 15000)) (("vārds": "Mihails Tal", "vecums") : 40, “alga”: 15000), (“Vārds”: “Alans Tūrings”, “Vecums”: 25, “Alga”: 10000), (”Vārds ':' Sharon Lin ',' vecums ': 30,' alga ': 8000), (' Vārds ':' John Hopkins ',' vecums ': 18,' alga ': 1000))
Lai uzzinātu vairāk par lambda funkcijām, apmeklējiet Python Lambda funkcijas.