Hur man sorterar listor i Python

How Sort Lists Python



Denna artikel kommer att omfatta en guide om sorteringslistor i Python. Ett Python -listobjekt är en samling av ett eller flera kommaseparerade objekt. Det är ett iterbart objekt och dess element kan nås genom att iterera över listan med hjälp av loop -satser och andra uttryck. Du kan sortera en Python -lista med hjälp av sorterings- och sorteringsmetoder, båda förklaras i artikeln. Alla kodprover i denna artikel testas med Python 3.9.5 i Ubuntu 21.04.

Sorteringsmetod

Sorteringsmetoden sorterar en lista på plats. Med andra ord kommer det att ändra listobjektet du ska sortera och ordna om elementet. Om du inte behöver den ursprungliga listan och inte har något emot att listan ändrar ordning på element på plats är detta den mest effektiva metoden i Python för att sortera en lista. Tänk på detta exempel:







de= [2, 8, 6, 4]

de.sortera()

skriva ut (de)

Efter att ha kört ovanstående kodprov bör du få följande utdata:



[2, 4, 6, 8]

Den första satsen i kodprovet definierar en lista. Därefter kallas sorteringsmetoden på listan. När du skriver ut listan kan du se att den ursprungliga listans ordning har ändrats.



Som standard sorterar Python en lista i stigande ordning. Om du vill sortera en lista i fallande ordning använder du omvänd metod, som visas i kodprovet nedan:





de= [2, 8, 6, 4]

de.sortera()

de.omvänd()

skriva ut (de)

Efter att ha kört ovanstående kodprov bör du få följande utdata:

[8, 6, 4, 2]

Den omvända metoden ändrar också en Python-lista på plats utan att skapa en ny lista.



Om din lista innehåller strängelement, ringer du sorteringsmetoden på den alfabetiskt där symboler och siffror ordnas först. Ta en titt på kodprovet nedan:

de= ['s', 'till', 'Med', '4', '#']

de.sortera()
skriva ut (de)

Efter att ha kört ovanstående kodprov bör du få följande utdata:

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

Du kan också använda omvänd metod i en lista som innehåller strängelement.

de= ['s', 'till', 'Med', '4', '#']

de.sortera()

de.omvänd()

skriva ut (de)

Efter att ha kört ovanstående kodprov bör du få följande utdata:

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

Sorterad metod

Den sorterade metoden sorterar också en Python -lista, på samma sätt som sorteringsmetoden. Men istället för att ändra den ursprungliga listan returnerar den en ny lista så att den ursprungliga listan lämnas orörd om du vill återanvända den. Tänk på koden nedan:

lista 1= ['s', 'till', 'Med', '4', '#']

lista2= sorterad(lista 1)

skriva ut (lista 1,lista2)

Efter att ha kört ovanstående kodprov bör du få följande utdata:

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

Du kan se i utdata att list1 är intakt och list2 nu har sorterade element. Du kan också använda den omvända metoden på list2 för att ändra dess beställningsmetodik.

Omvänd argument

Du kan använda det omvända argumentet som ett alternativ till omvänd funktion i både sorterings- och sorteringsmetoder för att få en sorterad lista i fallande ordning. Ange bara ett sant värde för att ändra sorteringsordningen:

lista 1= ['s', 'till', 'Med', '4', '#']

lista2= sorterad(lista 1,omvänd=Sann)

skriva ut (lista 1,lista2)

Efter att ha kört ovanstående kodprov bör du få följande utdata:

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

Använda nyckelfunktionen för att ange din egen logik för att sortera element i en lista

I både sorterings- och sorteringsmetoder kan du ange ett ytterligare nyckelargument som tar en uppringningsbar funktion som värde. Detta nyckelargument kan tilldelas en befintlig funktion från inbyggda Python-moduler eller så kan du förse din egen funktion med anpassad logik. Ta en titt på kodprovet nedan:

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

lista2= sorterad(lista 1,nyckel-=len)

skriva ut (lista 1,lista2)

lista 1.sortera(nyckel-=len)

skriva ut (lista 1)

Efter att ha kört ovanstående kodprov bör du få följande utdata:

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

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

Kodprovet illustrerar användningen av nyckelargument i både sorterade och sorterade metoder. Funktionen som ges till den kallas len som bestämmer längden på ett strängobjekt eller en iterabel. Funktionen eller den som kan ringas bör ursprungligen bara ta ett argument. Du tilldelar det till nyckelargumentet utan att använda hängslen. Den uppringningsbara funktionen som levereras till nyckelargumentet används för varje element i listan. De värden som returneras från denna uppringningsbara metod används sedan som en nyckel för att sortera listan. Därför sorterar elementen i en lista i ordning efter deras längd, det vill säga från kortast till längst, genom att leverera len -funktionen till nyckelargumentet. Som tidigare nämnts kan du alltid använda omvänd metod för att vända sorteringsmetoden.

Du kan också använda din egen anpassade funktion eller en-linjers lambda-funktioner som returnerar värdet på ett enda uttryck. Ta en titt på kodprovet nedan där en lista innehåller dubbletter av nuvarande inventering av fruktlådor:

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

lista 1.sortera(nyckel-=lambdainventering: inventering[1])

skriva ut (lista 1)

Efter att ha kört ovanstående kodprov bör du få följande utdata:

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

Lambda -funktionen levereras med en argumentinventering, som är varje element i listan i tupelform. Den returnerar sedan det andra elementet i varje tupel som nyckel (vid index 1). Sorteringsfunktionen sorterar sedan alla tupler efter sitt andra element i stigande ordning. Du kan också använda omvänd funktion eller omvänd argument på slutresultatet för att vända sorteringsordningen.

Slutsats

Det här är några sätt på vilka du kan sortera innehållet i en iterabel lista i Python. Nyckelargumentet låter dig skriva din egen anpassade sorteringslogik, lämplig för applikationer som kan ha andra behov än de inbyggda sorteringsmetoderna.