Denne artikkelen vil lære deg hvordan du sorterer en liste i Python.
I Python kan du bruke sort()-metoden for å sortere en liste på plass. Eller du kan bruke den innebygde sorted()-funksjonen for å få en sortert kopi av listen.
I denne opplæringen lærer du:
- Syntaks for sort()-metoden og sortered()-funksjonen
- Kode eksempler på sortering av lister i stigende og synkende rekkefølge
- Tilpass sortering ved å bruke nøkkelparameteren
- Forskjellen mellom sort() og sortert()
La oss starte!👩🏽💻
Innholdsfortegnelse
Syntaks for Python sort()-metoden
Sort()-metoden virker på en Python-liste. Og den sorterer listen på plass – og endrer den opprinnelige listen.
Syntaksen for Pythons sort()-metode er:
<list>.sort(reverse = True | False, key = <func>)
La oss nå analysere syntaksen ovenfor.
- er et hvilket som helst gyldig Python-listeobjekt.
- reverse er en valgfri parameter som tar enten True eller False.
- Standardverdien for revers er False, og listen er sortert i stigende rekkefølge. Gi True for å sortere listen i synkende rekkefølge.
- key er også en valgfri parameter som er satt til
. kan være en innebygd funksjon eller en brukerdefinert funksjon.
I neste avsnitt begynner du å kode enkle eksempler.
Hvordan sortere Python-listen i stigende rekkefølge
Tenk på listene. For å sortere listen i stigende rekkefølge kan du kalle opp sort()-metoden på listen.
▶ Kjør følgende kodebit.
nums = [25,13,6,17,9] nums.sort() print(nums) # Output: [6, 9, 13, 17, 25]
Listenumrene er sortert i stigende rekkefølge, og den opprinnelige listen er endret. Dette kalles stedssortering.
Hvordan sortere Python-listen i synkende rekkefølge
For å sortere listen i synkende rekkefølge, sett revers til True, som vist nedenfor.
nums = [25,13,6,17,9] nums.sort(reverse = True) print(nums) # Output: [25, 17, 13, 9, 6]
Du kan se at listen nå er sortert i synkende rekkefølge.
Slik bruker du nøkkel med Python sort()-metoden
I denne delen, la oss bruke nøkkelparameteren og tilpasse sorteringen.
Her er mod5() en funksjon som tar inn et tall x, og returnerer resten når tallet x er delt på 5.
def mod5(x): return x % 5
Og vi vil gjerne bruke funksjonen ovenfor som nøkkelen.
Kjør nå følgende kodecelle.
nums = [25,13,6,17,9] nums.sort(key = mod5) print(nums) # Output: [25, 6, 17, 13, 9]
Bruk et minutt på å analysere utdataene.
Legg merke til hvordan du i stedet for vanlig sortering nå tilpasser sorteringen i henhold til nøkkelen som er mod5.
- Tallet som forlater minimumsresten ved delt på 5 kommer først nå.
- Og tallet som etterlater den største resten ved delt på 5 er det siste elementet i den sorterte listen.
For å bekrefte at dette er tilfelle, kjør følgende kodebit.
nums = [25,13,6,17,9] for num in nums: print(f"{num} leaves remainder {num%5} when divided by 5") # Output 25 leaves remainder 0 when divided by 5 13 leaves remainder 3 when divided by 5 6 leaves remainder 1 when divided by 5 17 leaves remainder 2 when divided by 5 9 leaves remainder 4 when divided by 5
5 deler nøyaktig 25, og resten er 0. Så det er det første elementet i den sorterte listen. 6 etterlater en gjenværende 1, så det er det andre elementet, og så videre. 9 forlater resten 4 når deles på 5, og det er det siste elementet i den sorterte listen.
I stedet for å definere en egen funksjon, kan du like gjerne bruke lambda funksjoner. I Python er lambdaer anonyme funksjoner på én linje. lambda args : uttrykk returnerer uttrykket beregnet på args.
La oss nå omskrive sorteringen ovenfor ved å bruke lambda-uttrykket, som vist nedenfor.
nums = [25,13,6,17,9] nums.sort(key = lambda x:x%5) print(nums) # Output: [25, 6, 17, 13, 9]
Så langt har du lært hvordan du sorterer en liste med tall. Deretter, la oss se hvordan du kan sortere en liste over strenger i Python.
Hvordan sortere Python-listen i alfabetisk rekkefølge
I denne delen lærer du å sortere en liste over strenger – med eksempler inspirert av Harry Potter. ✨
I vårt eksempel er studenter en liste over elever ved Galtvort. Og vi vil gjerne sortere dem i alfabetisk rekkefølge etter navnene deres.
Når du sorterer en liste med strenger, er standardsortering i alfabetisk rekkefølge.
students = ["Harry","Ron","Hermione","Draco","Cedric"]
La oss skrive ut den sorterte listen for å bekrefte resultatet av sorteringen.
students.sort() print(students) # Output ['Cedric','Draco', 'Harry', 'Hermione', 'Ron']
Hvordan sortere Python-listen i omvendt alfabetisk rekkefølge
For å sortere listen i omvendt alfabetisk rekkefølge, sett reverse = True, som vist i kodebiten nedenfor.
students.sort(reverse = True) print(students) # Output ['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']
Fra utgangen kan du se at listen faktisk er sortert i omvendt rekkefølge.
Slik bruker du nøkkelparameter Tilpass sortering
I denne delen, la oss tilpasse sorteringen ved å bruke den valgfrie nøkkelparameteren.
Tenk på følgende liste, hus.
houses = [ {1:"Draco","house":"Slytherin"}, {2:"Harry","house":"Gryffindor"}, {3:"Cedric","house":"Hufflepuff"} ]
Her er hus en liste over ordbøker. Hver ordbok inneholder to nøkkelverdi-par, det ene angir elevenes navn og det andre huset de tilhører.
Nå ønsker vi å sortere denne listen husene i alfabetisk rekkefølge av husene de tilhører.
Som du kanskje har gjettet nå, bør vi sette nøkkelparameteren til huset til de bestemte studentene.
For å hente huset til hver student, kan du definere en funksjon returnHouse(), som vist nedenfor.
def returnHouse(student): return student['house']
Denne funksjonen returnerer huset som den aktuelle studenten tilhører.
Nå kan du kalle sort()-metoden på huslisten, som vist.
houses.sort(key=returnHouse)
I utdataene nedenfor, legg merke til hvordan listen er sortert etter huset og ikke elevenes navn. Det er derfor vi har Gryffindor, Hufflepuff og Slytherin – i alfabetisk rekkefølge.
print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
For å definere nøkkelparameteren tilsvarende, kan du også bruke en lambda-funksjon. For hvert listeelement returnerer denne funksjonen huset for det listeelementet.
▶ Kjør følgende kodecelle for å bekrefte dette.
houses.sort(key=lambda student:student["house"]) print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
I alle eksemplene så langt har du brukt sort()-metoden på en liste. Og du vet nå at den endrer den opprinnelige listen.
Hva om du ønsker å beholde den opprinnelige listen slik den er, men få en sortert kopi av listen?
Vel, i Python kan du bruke funksjonen sortert() for å gjøre dette.
Syntaks for Python sortert() funksjon
Sorted()-funksjonen tar inn en liste eller en hvilken som helst samling som argument. Og den returnerer en sortert kopi av listen – og den opprinnelige listen er ikke endret.
Syntaksen for Pythons sorted() funksjon er:
<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)
Legg merke til hvordan syntaksen er veldig lik sort()-metoden vi så tidligere.
- er et hvilket som helst gyldig Python-listeobjekt og er en nødvendig parameter.
- revers og nøkkel er valgfrie parametere
Merk: I motsetning til sort()-metoden som bare virker på lister, kan sorted()-funksjonen brukes til å sortere alle Python iterable, for eksempel lister, strenger og ordbøker.
Hvordan sortere Python-liste ved å bruke sorted()-funksjonen
#1. I dette eksemplet er nums en liste over tall.
Du kan kalle sorted()-funksjonen med nums som argument. Og tilordne den til listen sorted_nums1.
nums = [25,13,6,17,9] sorted_nums1 = sorted(nums) print(sorted_nums1) # Output: [6, 9, 13, 17, 25]
I utdataene ovenfor kan du se at tall er sortert i stigende rekkefølge som standard.
Legg også merke til at de opprinnelige listenumrene ikke er endret – fordi sorted() returnerer en ny liste. Dette er bekreftet nedenfor.
print(nums) # Output: [25, 13, 6, 17, 9]
#2. Sett nå den valgfrie parameteren revers til True og få sorted_nums2.
Som vist i kodecellen nedenfor, er sorted_nums2 en ny liste med elementene sortert i synkende rekkefølge.
sorted_nums2 = sorted(nums,reverse = True) print(sorted_nums2) # Output: [25, 17, 13, 9, 6]
#3. I dette eksemplet, la oss jobbe med en liste over strenger.
Som med de forrige eksemplene, returnerer du en ny liste ved å kalle opp sorted()-funksjonen. Og elementene er sortert i alfabetisk rekkefølge.
fruits = ['pears','strawberry','apple','pineapple','blueberry'] sorted_fr1 = sorted(fruits) print(sorted_fr1) # Output: ['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']
#4. La oss nå tilpasse sorteringen ved å bruke den valgfrie nøkkelparameteren. Sett nøkkelen til len. Dette vil sortere listen basert på lengden på strengene.
Merk: I Python tar den innebygde len()-funksjonen inn alle iterable, for eksempel lister, streng, tuples og så videre. Og den returnerer lengden på den iterable.
Strengen med kortest lengde vises først i den sorterte listen, og den lengste strengen vises på slutten av den sorterte listen.
fruits = ['pear','strawberry','apple','pineapple','blueberry'] sorted_fr2 = sorted(fruits,key=len) print(sorted_fr2) # Output: ['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']
I utgangen ovenfor er pære den korteste strengen, og jordbær er den lengste strengen.
Python sort() Metode vs. sorted() funksjon
Så langt har du lært hvordan du bruker sort()-metoden så vel som sortered()-funksjonen. I denne delen, la oss telle opp forskjellene mellom disse to metodene.
Python .sort() MetodePython sorted() FunksjonSorterer listen på plass – endrer den opprinnelige listen Returnerer en ny sortert liste Fungerer bare med Python-lister Fungerer med Python iterables som lister, strenger og andre samlingerHar returtype IngenReturnerer en sortert kopi av den iterable
Oppsummering 👩🏫
Jeg håper du syntes denne Python-listeopplæringen var nyttig.
La oss raskt oppsummere hva vi har dekket.
- Bruk list.sort(reverse = True | False, key =
) med de valgfrie reverse- og nøkkelparametrene for å sortere en liste på plass. - Bruk sorted(list, reverse = True | False, key =
) for å få en sortert kopi av listen.
Nå som du har lært hvordan du sorterer Python-lister, kan du lære om listeforståelse i Python. Eller du kan like godt lære hvordan du håndterer filer eller jobber med JSON-filer i Python.
Du kan prøve eksemplene gitt ovenfor i tipsbilk.net Online Python Compiler.