Sortiranje popisa Python ()

Metoda sort () sortira elemente datog popisa u određenom rastućem ili silaznom redoslijedu.

Sintaksa sort()metode je:

 list.sort (tipka = …, obrnuto = …)

Alternativno, u istu svrhu možete koristiti i ugrađenu Pythonovu funkciju sorted ().

 sortirano (popis, ključ =…, obrnuto =…)

Napomena: Najjednostavnija razlika između sort()i sorted()je: sort()izravno mijenja popis i ne vraća nikakvu vrijednost, dok sorted()ne mijenja popis i vraća razvrstani popis.

sort () Parametri

Prema zadanim postavkama sort()ne zahtijeva nikakve dodatne parametre. Međutim, ima dva neobavezna parametra:

  • obrnuto - Ako Trueje sortirani popis obrnut (ili sortiran u padajućem redoslijedu)
  • key - funkcija koja služi kao ključ za usporedbu sortiranja

Vrati vrijednost iz sort ()

sort()Metoda ne vraća nikakvu vrijednost. Umjesto toga, mijenja izvorni popis.

Ako želite da funkcija vrati sortirani popis, a ne da promijeni izvorni popis, upotrijebite sorted().

Primjer 1: Poredaj zadani popis

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)

Izlaz

 Poredani popis: ('a', 'e', ​​'i', 'o', 'u')

Poredaj po padajućem redoslijedu

sort()Postupak prihvaća reverseparametar kao dodatni argument.

Postavljanje reverse = Truesortira popis u opadajućem redoslijedu.

 list.sort(reverse=True)

Alternativno za sorted(), možete koristiti sljedeći kod.

 sorted(list, reverse=True)

Primjer 2: Poredaj popis u padajućem redoslijedu

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)

Izlaz

 Poredani popis (u opadajućem): ('u', 'o', 'i', 'e', ​​'a')

Poredaj pomoću prilagođene funkcije pomoću tipke

Ako želite vlastitu implementaciju za sortiranje, sort()metoda također prihvaća keyfunkciju kao neobavezni parametar.

Na temelju rezultata funkcije ključa možete razvrstati zadani popis.

 list.sort(key=len)

Alternativno za sortirano:

 sorted(list, key=len)

Ovdje lenje ugrađena Pythonova funkcija za brojanje duljine elementa.

Popis se sortira na temelju duljine svakog elementa, od najmanjeg do najvišeg broja.

Znamo da se tuple prema zadanim postavkama sortira pomoću prvog parametra. Pogledajmo kako prilagoditi sort()metodu za sortiranje pomoću drugog elementa.

Primjer 3: Poredaj popis pomoću tipke

 # 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)

Izlaz

 Poredani popis: ((4, 1), (2, 2), (1, 3), (3, 4))

Uzmimo još jedan primjer. Pretpostavimo da imamo popis podataka o zaposlenicima ureda u kojem je svaki element rječnik.

Popis možemo sortirati na sljedeći način:

 # 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='')

Izlaz

(('' Ime ':' Alan Turing ',' dob ': 25,' plaća ': 10000), (' Ime ':' John Hopkins ',' dob ': 18,' plaća ': 1000), (' Ime ':' Mikhail Tal ',' dob ': 40,' plaća ': 15000), (' Ime ':' Sharon Lin ',' dob ': 30,' plaća ': 8000)) ((' Ime ':' John Hopkins ',' dob ': 18,' plaća ': 1000), (' Ime ':' Alan Turing ',' dob ': 25,' plaća ': 10000), (' Ime ':' Sharon Lin ', 'dob': 30, 'plaća': 8000), ('Ime': 'Mikhail Tal', 'dob': 40, 'plaća': 15000)) (('Ime': 'Mikhail Tal', 'dob' : 40, 'plaća': 15000), ('Ime': 'Alan Turing', 'dob': 25, 'plaća': 10000), ('Ime ':' Sharon Lin ',' dob ': 30,' plaća ': 8000), (' Ime ':' John Hopkins ',' dob ': 18,' plaća ': 1000))

Ovdje, za prvi slučaj, naša prilagođena funkcija vraća ime svakog zaposlenika. Budući da je ime a string, Python ga prema zadanim postavkama sortira prema abecednom redu.

Za drugi slučaj dob ( int) se vraća i sortira po rastućem redoslijedu.

U trećem slučaju, funkcija vraća plaću ( int) i sortira se prema silaznom redoslijedu pomoću reverse = True.

Dobra je praksa koristiti lambda funkciju kada se funkcija može sažeti u jedan redak. Dakle, gornji program također možemo napisati kao:

 # 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='')

Izlaz

(('' Ime ':' Alan Turing ',' dob ': 25,' plaća ': 10000), (' Ime ':' John Hopkins ',' dob ': 18,' plaća ': 1000), (' Ime ':' Mikhail Tal ',' dob ': 40,' plaća ': 15000), (' Ime ':' Sharon Lin ',' dob ': 30,' plaća ': 8000)) ((' Ime ':' John Hopkins ',' dob ': 18,' plaća ': 1000), (' Ime ':' Alan Turing ',' dob ': 25,' plaća ': 10000), (' Ime ':' Sharon Lin ', 'dob': 30, 'plaća': 8000), ('Ime': 'Mikhail Tal', 'dob': 40, 'plaća': 15000)) (('Ime': 'Mikhail Tal', 'dob' : 40, 'plaća': 15000), ('Ime': 'Alan Turing', 'dob': 25, 'plaća': 10000), ('Ime ':' Sharon Lin ',' dob ': 30,' plaća ': 8000), (' Ime ':' John Hopkins ',' dob ': 18,' plaća ': 1000))

Da biste saznali više o lambda funkcijama, posjetite Python Lambda funkcije.

Zanimljivi članci...