Python saraksta kārtošana ()

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 reverseparametru kā izvēles arguments.

Iestatījums reverse = Truesakā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 keykā 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 lenir 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.

Interesanti raksti...