Python Lijst sort() met voorbeelden

โšก Slimme samenvatting

Python De functie `list sort()` rangschikt de elementen van een lijst op hun plaats, standaard oplopend of aflopend via de parameter `reverse`. Een optionele functie `key` sorteert op basis van aangepaste criteria zoals lengte, tuple-velden of door de gebruiker gedefinieerde functies.

  • ๐Ÿ”˜ Syntax: De sort()-methode accepteert optionele parameters voor sleutel en omkering en wijzigt de oorspronkelijke lijst zonder een kopie te maken.
  • โ˜‘๏ธ Orderbeheer: Als de parameter 'reverse' op 'True' wordt ingesteld, worden de waarden van hoog naar laag gesorteerd in plaats van de standaard oplopende volgorde.
  • โœ… Belangrijkste parameter: Een belangrijke functie zoals `len` sorteert elementen op basis van een afgeleide waarde, zoals de lengte van een tekenreeks of een veld in een tuple.
  • ๐Ÿงช sort vs sorted: De sort()-methode wijzigt de lijst ter plaatse en retourneert None, terwijl sorted() een nieuwe lijst retourneert en de originele lijst behoudt.
  • ๏ธ Aangepaste criteria: Lambda-expressies en door de gebruiker gedefinieerde functies stellen sort() in staat om tuples, dictionaries en benoemde tuples te sorteren op basis van een willekeurig gekozen attribuut.
  • ๐Ÿค– AI-workflows: Machine learning-pipelines sorteren voorspellingen op score en selecteren de beste resultaten voordat ze worden gerangschikt of geรซvalueerd.

Python Lijst sort()

Waar zit de sort() methode in Python?

De sort()-functie in Python Deze functie helpt bij het sorteren van een lijst in oplopende of aflopende volgorde. Het kan worden gebruikt voor het sorteren van numerieke lijsten, tuples en tekenreeksen. Het creรซert geen aparte lijst, maar wijzigt of sorteert de originele lijst.

Syntaxis van sorteermethode in Python

De sorteerfunctie heeft de volgende syntaxis:

List.sort(key=โ€ฆ, reverse=โ€ฆ)

De sorteerfunctie heeft twee optionele parameters, namelijk:

  • Sleutel: - Dit wordt gebruikt om een โ€‹โ€‹functie te sorteren op basis van een sorteercriterium.
  • Reverse: โ€“ de waarde is waar of onwaar. Als de waarde waar is, sorteert deze aangepaste functie de lijst in aflopende volgorde.

Een lijst in oplopende volgorde sorteren met behulp van de sorteermethode in Python

In Python, sorteert de sorteerfunctie standaard elke lijst in oplopende volgorde. Een lijst in oplopende volgorde heeft de laagste waarde aan de linkerkant en de hoogste waarde aan de rechterkant.

Voorbeeld:

Python code:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

Output:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Code Uitleg:

  • De bovenstaande lijst is een willekeurig gedefinieerde stringlijst.
  • De sorteerfunctie van Python helpt bij het sorteren van de willekeurige lijst in oplopende volgorde, met de laagste lengte van het woord aan de linkerkant en de hoogste lengte van het woord aan de rechterkant.

Een lijst in aflopende volgorde sorteren

Met de sorteerfunctie kan een lijst ook in aflopende volgorde worden gesorteerd. Het kan worden gedefinieerd als de bestelling waarbij de lijst begint met de hoogste waarde en eindigt met de laagste waarde.

De omgekeerde parameter van de sorteerfunctie wordt toegewezen als true om een โ€‹โ€‹lijst in aflopende volgorde te sorteren.

Laten we het volgende voorbeeld eens bekijken:

Python code:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

Output:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

Opmerking: Zorg ervoor dat de toewijzing van het woord โ€œTrueโ€ aan de omgekeerde parameter begint met een hoofdletter โ€œTโ€ om runtimefouten te voorkomen.

Een lijst met tupels sorteren met behulp van de sorteermethode in Python

Python tuples zijn verzamelingen van onveranderlijke elementen die een geordende volgorde volgen. Python's sorteerfunctie kan worden gebruikt om een โ€‹โ€‹lijst met tupels te sorteren met behulp van een aangepaste functie en lambda-expressie.

Een aangepaste functie kan zonder naam worden gemaakt en worden weergegeven door een lambda-expressie. De syntax voor een lambda-expressie is als volgt:

Syntax:

Lambda arguments: expression

De bovenstaande syntaxis is gelijk aan de onderstaande Python-code:

def name (arguments):
return expression

Hier volgt een voorbeeld van een tuple en een aangepaste functie om te illustreren hoe een sorteerfunctie met sleutelparameters helpt bij het sorteren van de elementen in een tuple:

Python code:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

Output:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Code Uitleg:

  • De omgekeerde parameter wordt gedefinieerd als true om de tuple in aflopende volgorde te sorteren.
  • De aangepaste functie neemt het tweede element van de tuple.
  • Dit wordt gebruikt als de sleutel van de sorteerfunctie.

Laten we eens kijken naar het onderstaande voorbeeld dat gebruik maakt van lambda-expressie:

Python code:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

Output:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Uitleg:

  • De lambda-expressie helpt je om de elementen van het tupel van hoog naar laag te sorteren, met de sleutel als het tweede element van het tupel.
  • Het programma controleert de hoogste waarde van het tweede element van de tuple.

Lijstitems sorteren met Len als sleutelparameter

`len` is een ingebouwde functie die de lengte van een item bepaalt. De vastgestelde lengte kan worden gebruikt voor de indexering in de sorteerfunctie. Om dit te doen, kennen we `len` toe aan de functie. Python de belangrijkste parameter van de sorteerfunctie.

De volgende Python code illustreert hoe u de Len-functie gebruikt met de sorteerfunctie.

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

Output:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Code Uitleg:

Lijstitems sorteren met Len

  • De lengte van het element wordt een index voor de sleutelparameter om de lijst in oplopende volgorde te rangschikken.
  • De Len-functie schat de lengte van elk element in de basislijst.
  • Het houdt het kortste element aan de linkerkant en het grootste element aan de rechterkant.
  • Hier hebben de woorden alto en java een lengte van 4, die als eerste in de lijst staan, gevolgd door Guru99, wat een lengte van 6 heeft.

Dit voorbeeld illustreert het concept van de parameter 'reverse' in de sorteerfunctie, zoals hieronder weergegeven:

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

Output:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

Sorteren van lijstitems met behulp van een door de gebruiker gedefinieerde functie als sleutelparameter

Je kunt ook een door de gebruiker gedefinieerde functie als sleutelparameter gebruiken om een โ€‹โ€‹lijst te sorteren. Hier is een voorbeeld:

Python Code:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

Output:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Code Uitleg:

  • Er wordt een door de gebruiker gedefinieerde functie gemaakt om het jaar terug te geven
  • De sleutelparameter neemt een door de gebruiker gedefinieerde functie als criterium.
  • De sorteerfunctie rangschikt de lijst in oplopende volgorde op basis van de waarde van het element โ€œjaarโ€.

Verschil tussen de sorteermethode en de gesorteerde methode in Python

Na de bovenstaande voorbeelden te hebben doorgenomen, is het nuttig om de twee sorteertools direct met elkaar te vergelijken. Voordat we de verschillen samenvatten, laten we eerst de syntaxis van de `Sorted`-methode bekijken.

Python Syntax:

sorted (list_name, reverse=โ€ฆ., key=..)

Code Uitleg:

  • De gesorteerde functie sorteert de lijst in oplopende of aflopende volgorde.
  • De functie accepteert drie parameters, waarvan twee parameters van een optioneel type zijn en รฉรฉn parameter van het vereiste type.
  • Parameter lijst_naam is vereist bij gebruik van de Sorted-methode.
  • De Sorted-methode kan elk type itereerbare lijst als invoer gebruiken.
  • Belangrijke parameters en omgekeerde parameters zijn optionele parameters onder de gesorteerde methode in Python.

Hier is een voorbeeld van het gebruik van de sorteer- en gesorteerde functie in Python:

Python code:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

Output:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Code Uitleg:

  • De oorspronkelijke lijst wordt doorgegeven als een vereiste parameter voor de gesorteerde functie.
  • De Sorted-methode retourneert een nieuwe lijst naast de oorspronkelijke lijst.
  • Omdat er geen aanvullende parameters worden doorgegeven aan de gesorteerde methode, wordt de nieuwe lijst standaard in oplopende volgorde gesorteerd.
  • De sorteerfunctie maakt geen nieuwe lijst.

Hieronder volgen de belangrijkste overeenkomsten en verschillen:

Gesorteerde functie Sorteer functie
Gesorteerde functie in Python is een ingebouwde functie die lijstnaam als vereiste parameter gebruikt. De sorteerfunctie neemt niet de originele lijst als parameter.
De gesorteerde methode retourneert een nieuwe lijst De sorteerfunctie retourneert geen nieuwe lijst
De gesorteerde functie moet worden gebruikt voor iterabele lijsten De sorteerfunctie moet worden gebruikt voor niet-itereerbare lijsten.
Het wijzigt de originele lijst niet en stelt ons in staat originele gegevens te behouden. De sorteerfunctie wijzigt de oorspronkelijke functie en neemt daardoor minder geheugenruimte in beslag

Wanneer gebruik je de gesorteerde methode of de sorteermethode?

Laten we een voorbeeld nemen waarbij racegegevens moeten worden gesorteerd. Het programma maakt gebruik van het startnummer en de tijd in seconden die nodig is om de race te voltooien.

Python code:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

Output:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Code Uitleg:

  • De basislijst wordt gesorteerd met behulp van zowel de sorteerfunctie als de gesorteerde functie.
  • De basislijst gaat verloren wanneer de sorteerfunctie wordt toegepast.
  • De sorteerfunctie mag niet worden toegepast op de originele dataset. Het moet worden gebruikt als er een kopieversie van de originele dataset bestaat.
  • De functie Gesorteerd behoudt de originele lijst. Het overschrijft het niet.
  • Dit biedt betere tracefficiรซntie en effectief gegevensbeheer.

Veelgestelde vragen

Geef key=str.lower door aan de sort()-methode, bijvoorbeeld names.sort(key=str.lower). Elke string wordt vergeleken in kleine letters, dus 'Apple' en 'banana' worden alfabetisch gesorteerd, ongeacht het hoofdlettergebruik. De oorspronkelijke hoofdlettergevoeligheid van elk element blijft behouden in de uiteindelijke gesorteerde lijst.

Het sorteren van een lijst met alleen getallen of alleen tekenreeksen werkt, maar het combineren van verschillende gegevenstypen, zoals gehele getallen en tekenreeksen, leidt tot een TypeError, omdat Python Je kunt ze niet vergelijken. Converteer de waarden eerst naar een vergelijkbaar type, of geef een sleutelfunctie door die vergelijkbare sleutels retourneert.

Python Historisch gezien werd Timsort gebruikt, een hybride van mergesort en insertionsort. Sinds versie 3.11 gebruikt de interpreter Powersort, een van Timsort afgeleide variant met een slimmer mergebeleid. Beide zijn stabiel en draaien in het slechtste geval in O(n log n) tijd.

Ja. De sort()-methode is stabiel, dus elementen die gelijk zijn, behouden hun oorspronkelijke relatieve volgorde. Hierdoor kun je in stappen sorteren op basis van meerdere criteria, waarbij je eerst sorteert op de minst belangrijke sleutel en als laatste op de belangrijkste sleutel.

De sort()-methode heeft een looptijd van O(n log n) in het slechtste en gemiddelde geval. Bij data die al grotendeels geordend is, benadert de looptijd O(n), omdat het onderliggende algoritme bestaande gesorteerde reeksen detecteert en hergebruikt in plaats van ze opnieuw te sorteren.

Geef een sleutel door die elk item tijdens de vergelijking converteert, bijvoorbeeld nums.sort(key=int). De lijst wordt dan gesorteerd op numerieke waarde in plaats van op teken, zodat '10' correct na '9' komt te staan. De opgeslagen elementen blijven als tekenreeksen; alleen de vergelijking gebruikt hun integerwaarde.

Sorteren rangschikt voorspellingen op basis van score of waarschijnlijkheid, selecteert de top-k resultaten in rangschikkings- en aanbevelingssystemen en ordent records tijdens de gegevensvoorbereiding. Machine learning-pipelines sorteren vaak featurewaarden of modeluitvoer vรณรณr de evaluatie, waardoor de ingebouwde sort()-methode een veelgebruikte voorverwerkingsstap is.

Ja. GitHub Copilot en AI-assistenten genereren sort() en sorted() aanroepen, inclusief sleutelfuncties en lambda-expressies, op basis van een korte opmerking. Ze kunnen lussen omzetten in enkele sorteerinstructies, hoewel je de sortering nog steeds moet testen en het resultaat in uitzonderlijke gevallen moet bevestigen.

Vat dit bericht samen met: