Sådan sorteres lister i Python

How Sort Lists Python



Denne artikel vil dække en guide til sorteringslister i Python. Et Python -listeobjekt er en samling af et eller flere kommaadskilte elementer. Det er et iterbart objekt, og dets elementer kan tilgås ved at iterere over listen ved hjælp af loop -sætninger og andre udtryk. Du kan sortere en Python -liste ved hjælp af sorterings- og sorteringsmetoder, begge forklares i artiklen. Alle kodeeksempler i denne artikel er testet med Python 3.9.5 i Ubuntu 21.04.

Sorteringsmetode

Sorteringsmetoden sorterer en liste på stedet. Med andre ord vil det ændre det listeobjekt, du vil sortere, og omorganisere dets element. Hvis du ikke har brug for den originale liste og ikke har noget imod, at listen ændrer rækkefølgen af ​​elementer på stedet, er dette den mest effektive metode i Python til at sortere en liste. Overvej dette eksempel:







det= [2, 8, 6, 4]

det.sortere()

Print (det)

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output:



[2, 4, 6, 8]

Den første sætning i kodeeksemplet definerer en liste. Dernæst kaldes sorteringsmetoden på listen. Når du udskriver listen, kan du se, at den originale listes rækkefølge er blevet ændret.



Som standard sorterer Python en liste i stigende rækkefølge. Hvis du vil sortere en liste i faldende rækkefølge, skal du bruge omvendt metode, som vist i kodeeksemplet herunder:





det= [2, 8, 6, 4]

det.sortere()

det.baglæns()

Print (det)

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output:

[8, 6, 4, 2]

Den omvendte metode ændrer også en Python-liste på stedet uden at oprette en ny liste.



Hvis din liste indeholder strengelementer, vil kalden af ​​sorteringsmetoden på den ordne den alfabetisk, hvor symboler og tal bestilles først. Tag et kig på nedenstående kodeeksempel:

det= ['s', 'til', 'Med', '4', '#']

det.sortere()
Print (det)

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output:

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

Du kan også bruge den omvendte metode på en liste, der indeholder strengelementer.

det= ['s', 'til', 'Med', '4', '#']

det.sortere()

det.baglæns()

Print (det)

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output:

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

Sorteret metode

Den sorterede metode sorterer også en Python -liste på samme måde som sorteringsmetoden. I stedet for at ændre den originale liste returnerer den imidlertid en ny liste, så din originale liste forbliver uberørt, hvis du vil genbruge den. Overvej koden herunder:

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

liste 2= sorteret(liste 1)

Print (liste 1,liste 2)

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output:

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

Du kan se i output, at list1 er intakt, og list2 nu har sorterede elementer. Du kan også bruge den omvendte metode på list2 til at ændre bestillingsmetoden.

Omvendt argument

Du kan bruge det omvendte argument som et alternativ til omvendt funktion i både sorterings- og sorteringsmetoder for at få en sorteret liste i faldende rækkefølge. Giv det bare en sand værdi for at ændre sorteringsrækkefølgen:

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

liste 2= sorteret(liste 1,baglæns=Sand)

Print (liste 1,liste 2)

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output:

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

Brug af nøglefunktion til at angive din egen logik til sortering af elementer i en liste

I både sorterings- og sorteringsmetoder kan du angive et yderligere nøgleargument, der tager en funktion, der kan kaldes, som værdi. Dette centrale argument kan tildeles en eksisterende funktion fra indbyggede Python-moduler, eller du kan levere din egen funktion med tilpasset logik. Tag et kig på nedenstående kodeeksempel:

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

liste 2= sorteret(liste 1,nøgle=len)

Print (liste 1,liste 2)

liste 1.sortere(nøgle=len)

Print (liste 1)

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output:

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

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

Kodeksemplet illustrerer brugen af ​​nøgleargument i både sorterede og sorterede metoder. Funktionen, der leveres til den, kaldes len, der bestemmer længden af ​​et strengobjekt eller en iterable. Funktionen eller opkaldet bør oprindeligt kun tage et argument. Du tildeler det til hovedargumentet uden at bruge seler. Den opkaldsfunktion, der leveres til nøgleargumentet, kaldes på hvert element på listen. De værdier, der returneres fra denne opkaldsmetode, bruges derefter som en nøgle til sortering af listen. Derfor leverer len -funktionen til nøgleargumentet elementer i en liste i rækkefølgen af ​​deres længde, det vil sige fra kortest til længst. Som tidligere nævnt kan du altid bruge omvendt metode til at vende sorteringsmetoden.

Du kan også bruge din egen brugerdefinerede funktion eller en-liner lambda-funktioner, der returnerer værdien af ​​et enkelt udtryk. Tag et kig på nedenstående kodeeksempel, hvor en liste indeholder eksemplarer af den nuværende beholdning af frugtkasser:

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

liste 1.sortere(nøgle=lambdabeholdning: beholdning[1])

Print (liste 1)

Efter at have kørt ovenstående kodeeksempel, skal du få følgende output:

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

Lambda -funktionen leveres med en argumentbeholdning, som er hvert element i listen i tupleform. Det returnerer derefter det andet element i hver tupel som nøgle (ved indeks 1). Sorteringsfunktionen sorterer derefter alle tupler efter sit andet element i stigende rækkefølge. Du kan også bruge omvendt funktion eller omvendt argument på slutresultatet til at vende sorteringsrækkefølgen.

Konklusion

Dette er nogle måder, hvorpå du kan sortere indholdet af en iterabel liste i Python. Hovedargumentet giver dig mulighed for at skrive din egen tilpassede sorteringslogik, der er velegnet til applikationer, der kan have andre behov end de indbyggede sorteringsmetoder.