Hvordan sortere lister i Python

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!👩🏽‍💻

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.

  Svar raskt på Skype-meldinger fra en popup [Jailbreak]