Lijsten sorteren in Python

How Sort Lists Python



Dit artikel behandelt een gids over het sorteren van lijsten in Python. Een Python-lijstobject is een verzameling van een of meer door komma's gescheiden items. Het is een itereerbaar object en de elementen ervan zijn toegankelijk door de lijst te herhalen met behulp van loop-instructies en andere expressies. Je kunt een Python-lijst sorteren met behulp van sorteer- en gesorteerde methoden, beide worden uitgelegd in het artikel. Alle codevoorbeelden in dit artikel zijn getest met Python 3.9.5 in Ubuntu 21.04.

Sorteermethode

De sorteermethode sorteert een lijst op zijn plaats. Met andere woorden, het zal het lijstobject dat u gaat sorteren wijzigen en het element ervan opnieuw ordenen. Als je de originele lijst niet nodig hebt en het niet erg vindt dat de lijst de volgorde van de elementen op zijn plaats wijzigt, is dit de meest efficiënte methode in Python om een ​​lijst te sorteren. Beschouw dit voorbeeld:







de= [2, 8, 6, 4]

de.soort()

afdrukken (de)

Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:



[2, 4, 6, 8]

De eerste instructie in het codevoorbeeld definieert een lijst. Vervolgens wordt de sorteermethode in de lijst aangeroepen. Wanneer u de lijst afdrukt, kunt u zien dat de volgorde van de oorspronkelijke lijst is gewijzigd.



Standaard sorteert Python een lijst in oplopende volgorde. Als u een lijst in aflopende volgorde wilt sorteren, gebruikt u de omgekeerde methode, zoals weergegeven in het onderstaande codevoorbeeld:





de= [2, 8, 6, 4]

de.soort()

de.achteruit()

afdrukken (de)

Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

[8, 6, 4, 2]

De omgekeerde methode verandert ook een Python-lijst op zijn plaats zonder een nieuwe lijst te maken.



Als uw lijst tekenreekselementen bevat, zal het aanroepen van de sorteermethode erop alfabetisch worden gerangschikt, waarbij symbolen en cijfers het eerst worden gerangschikt. Bekijk het codevoorbeeld hieronder:

de= ['s', 'tot', 'Met', '4', '#']

de.soort()
afdrukken (de)

Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

['#', '4', 'tot', 's', 'Met']

U kunt ook de omgekeerde methode gebruiken op een lijst met tekenreekselementen.

de= ['s', 'tot', 'Met', '4', '#']

de.soort()

de.achteruit()

afdrukken (de)

Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

['Met', 's', 'tot', '4', '#']

Gesorteerde methode

De sorteermethode sorteert ook een Python-lijst, op dezelfde manier als de sorteermethode. In plaats van de originele lijst te wijzigen, retourneert het echter een nieuwe lijst, zodat uw originele lijst onaangeroerd blijft voor het geval u deze opnieuw wilt gebruiken. Overweeg de onderstaande code:

lijst1= ['s', 'tot', 'Met', '4', '#']

lijst2= gesorteerd(lijst1)

afdrukken (lijst1,lijst2)

Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

['s', 'tot', 'Met', '4', '#'] ['#', '4', 'tot', 's', 'Met']

Je kunt in de uitvoer zien dat lijst1 intact is en lijst2 nu gesorteerde elementen heeft. U kunt ook de omgekeerde methode op lijst2 gebruiken om de bestelmethode te wijzigen.

Omgekeerd argument

U kunt het omgekeerde argument gebruiken als alternatief voor de omgekeerde functie in zowel sorteer- als sorteermethoden om een ​​gesorteerde lijst in aflopende volgorde te krijgen. Geef het gewoon een True-waarde op om de sorteervolgorde te wijzigen:

lijst1= ['s', 'tot', 'Met', '4', '#']

lijst2= gesorteerd(lijst1,achteruit=Waar)

afdrukken (lijst1,lijst2)

Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

['s', 'tot', 'Met', '4', '#'] ['Met', 's', 'tot', '4', '#']

Toetsfunctie gebruiken om uw eigen logica te specificeren voor het sorteren van elementen van een lijst

In zowel de sorteer- als de sorteermethode kunt u een extra sleutelargument opgeven dat een aanroepbare functie als waarde heeft. Aan dit sleutelargument kan een bestaande functie worden toegewezen vanuit ingebouwde Python-modules of u kunt uw eigen functie voorzien van aangepaste logica. Bekijk het codevoorbeeld hieronder:

lijst1= ['abcde', 'xyz', 'ijkl']

lijst2= gesorteerd(lijst1,toets=len)

afdrukken (lijst1,lijst2)

lijst1.soort(toets=len)

afdrukken (lijst1)

Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

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

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

Het codevoorbeeld illustreert het gebruik van sleutelargumenten in zowel gesorteerde als sorteermethoden. De functie die eraan wordt geleverd, wordt len ​​genoemd en bepaalt de lengte van een stringobject of een iterabel. De functie of aanroepbaar zou oorspronkelijk slechts één argument moeten hebben. U wijst het toe aan het sleutelargument zonder accolades te gebruiken. De aanroepbare functie die aan het sleutelargument wordt geleverd, wordt bij elk element van de lijst aangeroepen. De waarden die door deze aanroepbare methode worden geretourneerd, worden vervolgens gebruikt als een sleutel voor het sorteren van de lijst. Daarom sorteert het leveren van de len-functie aan het sleutelargument elementen van een lijst in de volgorde van hun lengte, dat wil zeggen van kort naar langst. Zoals eerder vermeld, kunt u altijd de omgekeerde methode gebruiken om de sorteermethode om te keren.

U kunt ook uw eigen aangepaste functie of one-liner lambda-functies gebruiken die de waarde van een enkele expressie retourneren. Bekijk het onderstaande codevoorbeeld waar een lijst met tupels van de huidige voorraad fruitkratten is:

lijst1= [('mango', 99), ('Oranje', 51), ('banaan', 76)]

lijst1.soort(toets=lambdainventaris: inventaris[1])

afdrukken (lijst1)

Nadat u het bovenstaande codevoorbeeld hebt uitgevoerd, zou u de volgende uitvoer moeten krijgen:

[('Oranje', 51), ('banaan', 76), ('mango', 99)]

De lambda-functie wordt geleverd met een argumentinventaris, die elk element van de lijst in tupelvorm is. Het retourneert dan het tweede element van elke tuple als sleutel (bij index 1). De sorteerfunctie sorteert vervolgens alle tuples op het tweede element in oplopende volgorde. U kunt ook de omgekeerde functie of het omgekeerde argument op het eindresultaat gebruiken om de sorteervolgorde om te keren.

Conclusie

Dit zijn enkele manieren waarop u de inhoud van een itereerbare lijst in Python kunt sorteren. Met het belangrijkste argument kunt u uw eigen aangepaste sorteerlogica schrijven, geschikt voor toepassingen die mogelijk andere behoeften hebben dan de ingebouwde sorteermethoden.