Razvrščanje seznama Python ()

Metoda sort () razvrsti elemente danega seznama v določenem naraščajočem ali padajočem vrstnem redu.

Sintaksa sort()metode je:

 list.sort (ključ = …, obratno = …)

Za isti namen lahko uporabite tudi Pythonovo vgrajeno funkcijo sorted ().

 razvrščeno (seznam, ključ =…, obratno =…)

Opomba: Najpreprostejša razlika med sort()in sorted()je: sort()seznam spremeni neposredno in ne vrne nobene vrednosti, medtem ko sorted()ne spremeni seznama in vrne razvrščeni seznam.

sort () Parametri

Privzeto sort()ne zahteva dodatnih parametrov. Vendar ima dva neobvezna parametra:

  • obratno - Če Trueje razvrščen seznam obrnjen (ali razvrščen po padajočem vrstnem redu)
  • key - funkcija, ki služi kot ključ za primerjavo razvrščanja

Vrnitev vrednosti iz sort ()

sort()Metoda ne vrne nobene vrednosti. Namesto tega spremeni prvotni seznam.

Če želite, da funkcija vrne razvrščeni seznam in ne spremeni prvotnega seznama, uporabite sorted().

Primer 1: Razvrstite dani seznam

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

Izhod

 Razvrščen seznam: ('a', 'e', ​​'i', 'o', 'u')

Razvrsti po padajočem vrstnem redu

sort()Metoda sprejme reverseparameter kot izbirni argument.

Nastavitev reverse = Truerazvrsti seznam po padajočem vrstnem redu.

 list.sort(reverse=True)

Lahko sorted()pa uporabite naslednjo kodo.

 sorted(list, reverse=True)

2. primer: Razvrstite seznam po padajočem vrstnem redu

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

Izhod

 Razvrščen seznam (v padajočem): ('u', 'o', 'i', 'e', ​​'a')

Razvrstite s funkcijo po meri s tipko

Če želite lastno izvedbo za razvrščanje, sort()metoda sprejme keyfunkcijo tudi kot izbirni parameter.

Na podlagi rezultatov funkcije ključa lahko dani seznam razvrstite.

 list.sort(key=len)

Druga možnost je razvrščena:

 sorted(list, key=len)

Tu lenje vgrajena funkcija Pythona za štetje dolžine elementa.

Seznam je razvrščen glede na dolžino vsakega elementa, od najnižjega do najvišjega.

Vemo, da je nabor privzeto razvrščen po prvem parametru. Poglejmo, kako prilagoditi sort()metodo za razvrščanje z uporabo drugega elementa.

3. primer: Razvrstite seznam s tipko

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

Izhod

 Razvrščen seznam: ((4, 1), (2, 2), (1, 3), (3, 4))

Vzemimo še en primer. Recimo, da imamo seznam informacij o zaposlenih v pisarni, kjer je vsak element slovar.

Seznam lahko razvrstimo na naslednji 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='')

Izhod

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

Tu prvič funkcija po meri vrne ime vsakega zaposlenega. Ker je ime a string, ga Python privzeto razvrsti po abecednem vrstnem redu.

V drugem primeru intse vrne starost ( ) in razvrsti v naraščajočem vrstnem redu.

V tretjem primeru funkcija vrne plačo ( int) in je razvrščena po padajočem vrstnem redu reverse = True.

Dobra praksa je, da funkcijo lambda uporabljamo, kadar je funkcijo mogoče strniti v eno vrstico. Torej, zgornji program lahko zapišemo tudi kot:

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

Izhod

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

Če želite izvedeti več o lambda funkcijah, obiščite Python Lambda Functions.

Zanimive Članki...