Sortimismeetod () sorteerib antud loendi elemendid kindlas kasvavas või kahanevas järjekorras.
Meetodi süntaks sort()
on:
list.sort (võti =…, tagurpidi =…)
Teise võimalusena võite samal eesmärgil kasutada ka Pythoni sisseehitatud funktsiooni sorted ().
sorteeritud (loend, võti =…, tagurpidi =…)
Märkus . Lihtsaim erinevus sort()
ja vahel sorted()
on: sort()
muudab loendit otse ja ei tagasta väärtust, samas sorted()
ei muuda loetelu ja tagastab sorditud loendi.
sort () Parameetrid
Vaikimisi sort()
ei vaja lisaparameetreid. Sellel on siiski kaks valikulist parameetrit:
- vastupidine - kui
True
, sorteeritud loend on vastupidine (või järjestatud kahanevas järjekorras) - võti - funktsioon, mis toimib sordi võrdlemise võtmena
Tagastage väärtus sortimisest ()
sort()
Meetod ei tagasta mingit väärtust. Pigem muudab see algset loendit.
Kui soovite, et funktsioon tagastaks sorditud loendi, selle asemel et muuta algset loendit, kasutage sorted()
.
Näide 1: antud loendi sortimine
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)
Väljund
Sorteeritud loend: ('a', 'e', 'i', 'o', 'u')
Sorteeri kahanevas järjekorras
sort()
Meetod aktsepteerib reverse
parameetri valikulise argument.
Seadistus reverse = True
sorteerib loendi kahanevas järjekorras.
list.sort(reverse=True)
Alternatiivina sorted()
saate kasutada järgmist koodi.
sorted(list, reverse=True)
Näide 2: Sorteeri loend kahanevas järjekorras
# vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)
Väljund
Sorteeritud loend (kahanevas järjekorras): ('u', 'o', 'i', 'e', 'a')
Sortimine kohandatud funktsiooniga klahvi abil
Kui soovite sortimiseks oma rakendust, sort()
aktsepteerib meetod key
funktsiooni ka valikulise parameetrina.
Põhifunktsiooni tulemuste põhjal saate antud loendi sortida.
list.sort(key=len)
Alternatiivina sortimiseks:
sorted(list, key=len)
Siin len
on Pythoni sisseehitatud funktsioon elemendi pikkuse lugemiseks.
Loend on sorteeritud iga elemendi pikkuse põhjal, väikseimast arvust suurimani.
Me teame, et dupleks sorteeritakse vaikimisi selle esimese parameetri abil. Vaatame, kuidas kohandada sort()
meetodit sortimiseks teise elemendi abil.
Näide 3: loendi sortimine klahvi abil
# 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äljund
Sorteeritud loend: ((4, 1), (2, 2), (1, 3), (3, 4))
Võtame veel ühe näite. Oletame, et meil on loetelu teabest kontori töötajate kohta, kus iga element on sõnastik.
Saame loendi sortida järgmisel viisil:
# 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äljund
(('Nimi': 'Alan Turing', 'vanus': 25, 'palk': 10000), ('Nimi': 'John Hopkins', 'vanus': 18, 'palk': 1000), ('nimi ":" Mihhail Tal "," vanus ": 40," palk ": 15000), (" nimi ":" Sharon Lin "," vanus ": 30," palk ": 8000)) ((" nimi ":" John Hopkins ',' vanus ': 18,' palk ': 1000), (' nimi ':' Alan Turing ',' vanus ': 25,' palk ': 10000), (' nimi ':' Sharon Lin ', "vanus": 30, "palk": 8000), ("nimi": "Mikhail Tal", "vanus": 40, "palk": 15000)) (("nimi": "Mihhail Tal", "vanus") : 40, "palk": 15000), ("nimi": "Alan Turing", "vanus": 25, "palk": 10000), ("Nimi ":" Sharon Lin "," vanus ": 30," palk ": 8000), (" nimi ":" John Hopkins "," vanus ": 18," palk ": 1000))
Esimesel juhul tagastab meie kohandatud funktsioon iga töötaja nime. Kuna nimi on a string
, sorteerib Python vaikimisi selle tähestikulises järjekorras.
Teisel juhul int
tagastatakse vanus ( ) ja sorteeritakse kasvavas järjekorras.
Kolmandal juhul tagastab funktsioon palga ( int
) ja sorteeritakse kahanevas järjekorras kasutades reverse = True
.
Hea tava on kasutada lambda-funktsiooni, kui funktsiooni saab kokku võtta ühes reas. Nii võime ülaltoodud programmi kirjutada ka järgmiselt:
# 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äljund
(('Nimi': 'Alan Turing', 'vanus': 25, 'palk': 10000), ('Nimi': 'John Hopkins', 'vanus': 18, 'palk': 1000), ('nimi ":" Mihhail Tal "," vanus ": 40," palk ": 15000), (" nimi ":" Sharon Lin "," vanus ": 30," palk ": 8000)) ((" nimi ":" John Hopkins ',' vanus ': 18,' palk ': 1000), (' nimi ':' Alan Turing ',' vanus ': 25,' palk ': 10000), (' nimi ':' Sharon Lin ', "vanus": 30, "palk": 8000), ("nimi": "Mikhail Tal", "vanus": 40, "palk": 15000)) (("nimi": "Mihhail Tal", "vanus") : 40, "palk": 15000), ("nimi": "Alan Turing", "vanus": 25, "palk": 10000), ("Nimi ":" Sharon Lin "," vanus ": 30," palk ": 8000), (" nimi ":" John Hopkins "," vanus ": 18," palk ": 1000))
Lambda funktsioonide kohta lisateabe saamiseks külastage lehte Python Lambda funktsioonid.