Python Lijst sort() met voorbeelden
Waar zit de sort() methode in Python?
Sorteer functie in Python helpt bij het sorteren van een lijst in oplopende of aflopende volgorde. Het kan worden gebruikt voor het sorteren van een numerieke lijst, tupels en stringlijst. Er wordt geen aparte lijst gemaakt, maar het origineel wordt gewijzigd of gesorteerd.
Syntaxis van sorteermethode in Python
De sorteerfunctie heeft de volgende syntaxis, zoals hieronder vermeld: –
List.sort(key=…, reverse=…)
De sorteerfunctie heeft twee optionele parameters, namelijk zoals hieronder vermeld: –
- Sleutel: - Dit wordt gebruikt om een functie te sorteren op basis van een sorteercriterium.
- Reverse: – de waarde wordt als waar of onwaar beschouwd. Indien waar, 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 Verklaring:
- 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 naar het onderstaande voorbeeld kijken: -
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 worden gemaakt zonder naam en worden weergegeven door een lambda-expressie. Hieronder volgt de syntaxis voor een lambda-expressie: –
Syntax:
Lambda arguments: expression
De bovenstaande syntaxis is gelijk aan de onderstaande Python-code:
def name (arguments): return expression
Hier is een voorbeeld van een tupel en een aangepaste functie om te illustreren hoe een sorteerfunctie met sleutelparameters helpt bij het sorteren van de elementen in een tupel:
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 Verklaring:
- 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 het item bepaalt. De bepaalde lengte kan worden gebruikt voor de indexering in de sorteerfunctie. Om dit te doen, wijzen we Len toe aan de 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 Verklaring:
- 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 zijn gerangschikt, gevolgd door Guru99, die een lengte van 6 heeft.
Dit voorbeeld illustreert het concept van de omgekeerde parameter 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
U 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 Verklaring:
- 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
Voordat we de verschillen samenvatten, moeten we eerst de syntaxis van de Sorted-methode uitleggen.
Python Syntax:
sorted (list_name, reverse=…., key=..)
Code Verklaring:
- 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 zoals hieronder weergegeven: –
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 Verklaring:
- 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 Verklaring:
- 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 een betere traceerbaarheid en effectief databeheer.
Conclusie
- De sorteerfunctie helpt bij het sorteren van een numerieke en stringlijst in Python.
- Het kan ook helpen bij het sorteren van tupels.
- Reverse en key zijn optionele parameters van de functie.
- Als er behoefte is aan een aparte lijst en tegelijkertijd de originele lijst, dan moet de sorteerfunctie worden gebruikt. Anders moet de sorteerfunctie worden gebruikt om optimaal geheugengebruik te bereiken.