Slik sorterer du lister i Python

How Sort Lists Python



Denne artikkelen vil dekke en guide om sorteringslister i Python. Et Python -listeobjekt er en samling av ett eller flere kommaadskilte elementer. Det er et gjentakelig objekt og dets elementer kan nås ved å iterere over listen ved hjelp av loop -setninger og andre uttrykk. Du kan sortere en Python -liste ved å bruke sorterte 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.

Sorteringsmetode

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







de= [2, 8, 6, 4]

de.sortere()

skrive ut (de)

Etter å ha kjørt kodeeksemplet ovenfor, bør du få følgende utdata:



[2, 4, 6, 8]

Den første setningen i kodeeksemplet definerer en liste. Deretter kalles sorteringsmetoden på listen. Når du skriver ut listen, kan du se at den opprinnelige listens rekkefølge 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 kodeeksemplet nedenfor:





de= [2, 8, 6, 4]

de.sortere()

de.omvendt()

skrive ut (de)

Etter å ha kjørt kodeeksemplet ovenfor, bør du få følgende utdata:

[8, 6, 4, 2]

Den omvendte metoden endrer også en Python-liste på plass uten å opprette en ny liste.



Hvis listen din inneholder strengelementer, vil du ringe sorteringsmetoden på den alfabetisk der symboler og tall bestilles først. Ta en titt på kodeeksemplet nedenfor:

de= [er ', 'til', 'Med', '4', '#']

de.sortere()
skrive ut (de)

Etter å ha kjørt kodeeksemplet ovenfor, bør du få følgende utdata:

['#', '4', 'til', er ', 'Med']

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

de= [er ', 'til', 'Med', '4', '#']

de.sortere()

de.omvendt()

skrive ut (de)

Etter å ha kjørt kodeeksemplet ovenfor, bør du få følgende utdata:

['Med', er ', 'til', '4', '#']

Sortert metode

Den sorterte metoden sorterer også en Python -liste, på samme måte som sorteringsmetoden. I stedet for å endre den opprinnelige listen, returnerer den imidlertid en ny liste slik at den opprinnelige listen forblir urørt hvis du vil bruke den på nytt. Vurder koden nedenfor:

liste 1= [er ', 'til', 'Med', '4', '#']

liste 2= sortert(liste 1)

skrive ut (liste 1,liste 2)

Etter å ha kjørt kodeeksemplet ovenfor, bør du få følgende utdata:

[er ', 'til', 'Med', '4', '#'] ['#', '4', 'til', er ', 'Med']

Du kan se i utgangen at list1 er intakt og list2 nå har sorterte elementer. Du kan også bruke omvendt metode på list2 for å endre bestillingsmetodikken.

Omvendt argument

Du kan bruke omvendt argument som et alternativ til reversfunksjon i både sorterings- og sorteringsmetoder for å få en sortert liste i synkende rekkefølge. Bare gi den en sann verdi for å endre rekkefølgen på sortering:

liste 1= [er ', 'til', 'Med', '4', '#']

liste 2= sortert(liste 1,omvendt=ekte)

skrive ut (liste 1,liste 2)

Etter å ha kjørt kodeeksemplet ovenfor, bør du få følgende utdata:

[er ', 'til', 'Med', '4', '#'] ['Med', er ', 'til', '4', '#']

Bruk nøkkelfunksjonen til å spesifisere din egen logikk for sortering av elementer i en liste

I både sorterte og sorterte metoder kan du angi et ekstra nøkkelargument som tar en funksjon som kan ringes til som 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å kodeeksemplet nedenfor:

liste 1= ['abcde', 'xyz', 'ijkl']

liste 2= sortert(liste 1,nøkkel=len)

skrive ut (liste 1,liste 2)

liste 1.sortere(nøkkel=len)

skrive ut (liste 1)

Etter å ha kjørt kodeeksemplet ovenfor, bør du få følgende utdata:

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

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

Kodeksemplet illustrerer bruk av nøkkelargument i både sorterte og sorterte metoder. Funksjonen som tilbys den kalles len som bestemmer lengden på et strengobjekt eller en iterabel. Funksjonen eller den som kan ringes bør opprinnelig bare ta ett argument. Du tilordner det til nøkkelargumentet uten å bruke seler. Den oppringbare funksjonen som leveres til nøkkelargumentet, kalles på hvert element i listen. Verdiene som returneres fra denne oppringbare metoden brukes deretter som en nøkkel for sortering av listen. Derfor leverer len -funksjonen til nøkkelargumentet elementer i en liste i rekkefølgen på lengden, det vil si fra korteste til lengste. Som nevnt tidligere, kan du alltid bruke omvendt metode for å reversere sorteringsmetoden.

Du kan også bruke din egen egendefinerte funksjon eller enliners lambda-funksjoner som returnerer verdien til et enkelt uttrykk. Ta en titt på kodeeksemplet nedenfor der en liste inneholder eksempler på gjeldende inventar av fruktkasser:

liste 1= [('mango', 99), ('oransje', 51), ('banan', 76)]

liste 1.sortere(nøkkel=lambdainventar: inventar[1])

skrive ut (liste 1)

Etter å ha kjørt kodeeksemplet ovenfor, bør du få følgende utdata:

[('oransje', 51), ('banan', 76), ('mango', 99)]

Lambda -funksjonen leveres med en argumentinventar, som er hvert element i listen i tupelform. Den returnerer deretter det andre elementet i hver tupel som nøkkel (ved indeks 1). Sorteringsfunksjonen sorterer deretter alle tuplene etter sitt andre element i stigende rekkefølge. Du kan også bruke reversfunksjonen eller omvendt argument på sluttresultatet for å reversere sorteringsrekkefølgen.

Konklusjon

Dette er noen måter du kan sortere innholdet på en gjentakende liste i Python på. Nøkkelargumentet lar deg skrive din egen tilpassede sorteringslogikk, egnet for applikasjoner som kan ha andre behov enn de innebygde sorteringsmetodene.