Hvordan sortere lister i Python

Hvordan sortere lister i Python

Denne artikkelen vil dekke en guide til sorteringslister i Python. Et Python -listeobjekt er en samling av en eller flere komma -separerte gjenstander. Det er et "iterable" objekt, og dets elementer kan nås ved å iterere over listen ved hjelp av sløyfe -setninger og andre uttrykk. Du kan sortere en Python -liste ved hjelp av "Sorter" og "Sorterte" metoder, begge er forklart i artikkelen. Alle kodeprøver i denne artikkelen er testet med Python 3.9.5 i Ubuntu 21.04.

Sorter metode

Sorteringsmetoden sorterer en liste "på stedet". Med andre ord, det vil endre listeobjektet du kommer til å sortere og omorganisere elementet. Hvis du ikke trenger den originale listen og ikke har noe imot at listen endrer rekkefølgen på elementer "på stedet", er dette den mest effektive metoden i Python for å sortere en liste. Tenk på dette eksemplet:

L = [2, 8, 6, 4]
l.sortere()
trykk (l)

Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:

[2, 4, 6, 8]

Den første uttalelsen i kodeprøven definerer en liste. Neste, "sorter" -metode blir kalt på listen. Når du skriver ut listen, kan du se at den opprinnelige listenes ordre er endret.

Som standard sorterer Python en liste i stigende rekkefølge. Hvis du vil sortere en liste i synkende rekkefølge, bruker du "Omvendt" -metode, som vist i kodeprøven nedenfor:

L = [2, 8, 6, 4]
l.sortere()
l.omvendt()
trykk (l)

Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:

[8, 6, 4, 2]

"Omvendt" -metoden endrer også en Python-liste "på stedet" uten å lage en ny liste.

Hvis listen din inneholder strengelementer, vil du kalle "sorter" -metoden på den bestille den alfabetisk hvor symboler og tall er bestilt først. Ta en titt på kodeprøven nedenfor:

l = ["s", "a", "z", "4", "#"]
l.sortere()
trykk (l)

Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:

['#', '4', 'A', 'S', 'Z']

Du kan også bruke omvendt metode på en liste som inneholder strengelementer.

l = ["s", "a", "z", "4", "#"]
l.sortere()
l.omvendt()
trykk (l)

Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:

['Z', 'S', 'A', '4', '#']

Sortert metode

Den sorterte metoden sorterer også en Python -liste, på samme måte som "Sorter" -metoden. I stedet for å endre den originale listen, returnerer den imidlertid en ny liste slik at den opprinnelige listen din blir uberørt i tilfelle du vil bruke den på nytt. Tenk på koden nedenfor:

liste1 = ["s", "a", "z", "4", "#"]
liste2 = sortert (liste1)
Print (List1, List2)

Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:

['S', 'A', 'Z', '4', '#'] ['#', '4', 'A', 'S', 'Z']

Du kan se i utgangen at “List1” er intakt og “List2” nå har sorterte elementer. Du kan også bruke "omvendt" -metoden på "List2" for å endre bestillingsmetodikken.

Omvendt argument

Du kan bruke "omvendt" -argumentet som et alternativ til omvendt funksjon i både "sorter" og "sorter" -metoder for å få en sortert liste i synkende rekkefølge. Bare gi den en "sann" verdi for å endre sorteringens rekkefølge:

liste1 = ["s", "a", "z", "4", "#"]
liste2 = sortert (liste1, reverse = true)
Print (List1, List2)

Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:

['S', 'A', 'Z', '4', '#'] ['Z', 'S', 'A', '4', '#']

Bruke nøkkelfunksjon for å spesifisere din egen logikk for å sortere elementer i en liste

I både "sorter" og "sorterte" metoder, kan du spesifisere et ekstra "nøkkel" -argument som tar en kallbar funksjon som dens verdi. Dette nøkkelargumentet kan tildeles en eksisterende funksjon fra innebygde Python-moduler, eller du kan levere din egen funksjon med tilpasset logikk. Ta en titt på kodeprøven nedenfor:

LIST1 = ["ABCDE", "XYZ", "IJKL"]
liste2 = sortert (liste1, nøkkel = len)
Print (List1, List2)
Liste1.sorter (nøkkel = len)
trykk (liste1)

Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:

['abcde', 'xyz', 'ijkl'] ['xyz', 'ijkl', 'abcde']
['xyz', 'ijkl', 'abcde']

Kodeprøven illustrerer bruken av "nøkkel" -argument i både "sorterte" og "sorter" -metoder. Funksjonen som leveres til den kalles "len" som bestemmer lengden på et strengobjekt eller en iterable. Funksjonen eller den kallbare skal opprinnelig bare ta ett argument. Du tildeler det til "nøkkel" -argumentet uten å bruke seler. Den kallbare funksjonen som leveres til "nøkkel" -argumentet blir kalt hvert element på listen. Verdiene som returneres fra denne kalte metoden blir deretter brukt som en nøkkel for å sortere listen. Følgelig å levere "len" -funksjonen til "nøkkel" -argumentet sorterer elementer i en liste i rekkefølgen av deres lengde, det vil si fra korteste til lengste. Som nevnt tidligere, kan du alltid bruke "omvendt" -metoden for å snu sorteringsmetodikken.

Du kan også bruke din egen tilpassede funksjon eller en-liner lambda-funksjoner som returnerer verdien av et enkelt uttrykk. Ta en titt på kodeprøven nedenfor der en liste har tuples av nåværende inventar av fruktkasser:

List1 = [("Mango", 99), ("Orange", 51), ("Banana", 76)]
Liste1.Sorter (Key = Lambda Inventory: Inventory [1])
trykk (liste1)

Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:

[('Orange', 51), ('Banana', 76), ('Mango', 99)]

"Lambda" -funksjonen leveres med et argument "Inventory", som er hvert element på listen i tupleform. Den returnerer deretter det andre elementet i hver tuple som tast (ved indeks 1). Sorteringsfunksjonen sorterer deretter alle tuples etter det andre elementet i stigende rekkefølge. Du kan også bruke "omvendt" -funksjonen eller "omvendt" -argumentet på sluttresultatet for å snu sorteringsrekkefølgen.

Konklusjon

Dette er noen måter du kan sortere innholdet i en iterable liste i Python. "Key" -argumentet lar deg skrive din egen tilpassede sorteringslogikk, egnet for applikasjoner som kan ha andre behov enn de innebygde sorteringsmetodene.