Python Lista sort() med exempel

⚡ Smart sammanfattning

Python list sort() ordnar elementen i en lista på plats, stigande som standard eller fallande genom den omvända parametern, medan en valfri nyckelfunktion sorterar efter anpassade kriterier som längd, tupelfält eller användardefinierade funktioner.

  • 🔘 Syntax: Metoden sort() accepterar valfria nyckel- och reverse-parametrar och ändrar den ursprungliga listan utan att skapa en kopia.
  • ☑️ Orderkontroll: Om du ställer in parametern omvänd till True sorteras värden från högsta till lägsta istället för den stigande ordningen som standard.
  • Nyckelparameter: En nyckelfunktion som len sorterar element efter ett härlett värde som stränglängd eller ett tupelfält.
  • 🧪 sortera vs sorterad: Metoden sort() ändrar listan på plats och returnerar None, medan sorted() returnerar en ny lista och behåller originalet.
  • 🛠️ Anpassade kriterier: Lambda-uttryck och användardefinierade funktioner låter sort() ordna tupler, ordböcker och namngivna tupler efter valfritt attribut.
  • 🤖 AI-arbetsflöden: Maskininlärningspipeliner sorterar förutsägelser efter poäng och väljer toppresultat före rangordning eller utvärdering.

Python List sort()

Vad är sort()-metoden i Python?

Funktionen sort() i Python hjälper till att sortera en lista i stigande eller fallande ordning. Den kan användas för att sortera en numerisk lista, tupler och en stränglista. Den skapar inte en separat lista utan modifierar eller sorterar originalet.

Syntax för sorteringsmetoden i Python

Sorteringsfunktionen har följande syntax:

List.sort(key=…, reverse=…)

Sorteringsfunktionen har två valfria parametrar, nämligen:

  • Nyckel:- Detta används för att sortera en funktion baserat på ett sorteringskriterium.
  • Reverse: – den tar värdet som antingen sant eller falskt. Om sant sorterar den här anpassade funktionen listan i fallande ordning.

Sortera en lista i stigande ordning med hjälp av metoden Sortera in Python

In Python, sorterar sorteringsfunktionen som standard valfri lista i stigande ordning. En lista i stigande ordning har det lägsta värdet på vänster sida, och det högsta värdet kommer på höger sida.

Exempel:

Python koda:

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

Produktion:

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

Code Förklaring:

  • Listan ovan är en slumpmässigt definierad stränglista.
  • Sorteringsfunktionen av Python hjälper till att sortera den slumpmässiga listan i stigande ordning, med den lägsta längden på ordet på vänster sida och den högsta längden på ordet på höger sida.

Sortera en lista i fallande ordning

Sorteringsfunktionen låter också en lista sorteras i fallande ordning. Det kan definieras som ordern där listan börjar med det högsta värdet och slutar med det lägsta värdet.

Den omvända parametern för sorteringsfunktionen tilldelas som sann för att få en lista sorterad i fallande ordning.

Låt oss titta på exemplet nedan:

Python koda:

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)

Produktion:

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

Obs: Se till att tilldelningen av ordet "True" till den omvända parametern börjar med versaler "T" för att undvika körtidsfel.

Sortera en lista med tuplar med hjälp av sorteringsmetoden i Python

Python tupler är samlingar av oföränderliga element som följer en ordnad sekvens. Pythons sorteringsfunktion kan användas för att sortera en lista med tupler med hjälp av en anpassad funktion och lambda-uttryck.

En anpassad funktion kan skapas utan namn och representeras av ett lambda-uttryck. Följande är syntaxen för Lambda-uttryck:

Syntax:

Lambda arguments: expression

Ovanstående syntax motsvarar pythonkoden nedan:

def name (arguments):
return expression

Här är ett exempel på en tupel och en anpassad funktion som illustrerar hur en sorteringsfunktion med nyckelparametrar hjälper till att sortera elementen i en tupel:

Python koda:

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)

Produktion:

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

Code Förklaring:

  • Den omvända parametern definieras som sann för att sortera tupeln i fallande ordning.
  • Den anpassade funktionen tar det andra elementet i tupeln.
  • Detta används som nyckeln till sorteringsfunktionen.

Låt oss titta på exemplet nedan som använder sig av lambdauttryck:

Python koda:

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)

Produktion:

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

Förklaring:

  • Lambda-uttrycket hjälper dig att sortera elementen i tupeln från högt till lågt med nyckeln som andra element i tupeln.
  • Programmet kommer att kontrollera det högsta värdet av det andra elementet i tupeln.

Sortera listobjekt med Len som nyckelparameter

Len är en inbyggd funktion som bestämmer längden på ett objekt. Den bestämda längden kan användas för indexering i sorteringsfunktionen. För att göra detta tilldelar vi Len till Python sorteringsfunktionens nyckelparameter.

Följande Python kod illustrerar hur man använder Len-funktionen med sorteringsfunktionen.

Python Code:

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

Produktion:

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

Code Förklaring:

Sortera listobjekt med Len

  • Längden på elementet blir ett index för nyckelparametern för att ordna listan i stigande ordning.
  • Len-funktionen uppskattar längden på varje element som finns i baslistan.
  • Den håller det kortaste elementet på vänster sida och det största elementet på höger sida.
  • Här har orden alto och java längderna 4, vilka är ordnade först i listan, följt av Guru99, som har en längd på 6.

Detta exempel illustrerar konceptet med den omvända parametern i sorteringsfunktionen enligt nedan:

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)

Produktion:

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

Sortera listobjekt med användardefinierad funktion som nyckelparameter

Du kan också använda en användardefinierad funktion som en nyckelparameter för att sortera en lista. Här är ett exempel:

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)

Produktion:

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 Förklaring:

  • En användardefinierad funktion skapas för att returnera året
  • Nyckelparametern tar en användardefinierad funktion som ett kriterium.
  • Sorteringsfunktionen kommer att ordna listan i stigande ordning baserat på värdet på elementet "år".

Skillnaden mellan sorteringsmetoden och sorterad metod i Python

Efter att ha gått igenom exemplen ovan är det bra att jämföra de två sorteringsverktygen direkt. Innan skillnaderna sammanfattas, låt oss förstå syntaxen för Sorted-metoden.

Python Syntax:

sorted (list_name, reverse=…., key=..)

Code Förklaring:

  • Den sorterade funktionen sorterar listan i antingen stigande eller fallande ordning.
  • Funktionen accepterar tre parametrar, varav två parametrar är av valfri typ och en parameter är av önskad typ.
  • Parametern list_name krävs när du använder metoden Sorterat.
  • Den sorterade metoden kan ta vilken typ av itererbar lista som helst som indata.
  • Nyckelparametrar och omvända parametrar är valfria parametrar under den sorterade metoden in Python.

Här är ett exempel på hur du använder sorterings- och sorteringsfunktionen i Python:

Python koda:

#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)

Produktion:

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 Förklaring:

  • Den ursprungliga listan skickas som en obligatorisk parameter för den sorterade funktionen.
  • Den sorterade metoden returnerar en ny lista utöver den ursprungliga listan.
  • Eftersom inga ytterligare parametrar skickas till den sorterade metoden, sorteras den nya listan som standard i stigande ordning.
  • Sorteringsfunktionen skapar ingen ny lista.

Följande är punkterna om viktiga likheter och skillnader:

Sorterad funktion Sorteringsfunktion
Sorterad funktion i Python är en inbyggd funktion som tar list_name som en obligatorisk parameter. Sorteringsfunktionen tar inte den ursprungliga listan som en parameter.
Sorterad metod returnerar en ny lista Sorteringsfunktionen returnerar inte en ny lista
Sorterad funktion ska användas för itererbara listor Sorteringsfunktionen ska användas för listor som inte går att upprepa.
Det ändrar inte den ursprungliga listan och tillåter oss att behålla originaldata. Sorteringsfunktionen modifierar den ursprungliga funktionen och tar därför upp mindre minnesutrymme

När ska man använda den sorterade metoden eller sorteringsmetoden?

Låt oss ta ett exempel som kräver att rasdata sorteras. Programmet använder bib-numret och tiden det tar i sekunder för att avsluta loppet.

Python koda:

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)

Produktion:

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 Förklaring:

  • Baslistan sorteras med både sorteringsfunktionen och sorterad funktion.
  • Baslistan går förlorad när sorteringsfunktionen används.
  • Sorteringsfunktionen ska inte tillämpas på den ursprungliga datamängden. Den ska användas när det finns en kopia av originaldatauppsättningen.
  • Den sorterade funktionen behåller den ursprungliga listan. Det åsidosätter det inte.
  • Detta erbjuder bättre traceffektivitet och datahantering.

Vanliga frågor

Skicka key=str.lower till sort()-metoden, till exempel names.sort(key=str.lower). Varje sträng jämförs med gemener, så 'Apple' och 'banana' ordnas alfabetiskt oavsett versaler. Det ursprungliga gemener- och versalläget för varje element bevaras i den slutliga sorterade listan.

Att sortera en lista med alla tal eller alla strängar fungerar, men att blanda orelaterade typer som heltal och strängar ger upphov till ett TypeError, eftersom Python kan inte jämföra dem. Konvertera värdena till en jämförbar typ först, eller skicka en nyckelfunktion som returnerar jämförbara nycklar.

Python historiskt använd Timsort, en hybrid av merge sortering och insertion sortering. Sedan version 3.11 använder tolken Powersort, en Timsort-härledd variant med en smartare merge policy. Båda är stabila och körs i värsta fall i O(n log n) tid.

Ja. Metoden sort() är stabil, så element som jämförs lika behåller sin ursprungliga relativa ordning. Detta låter dig sortera efter flera kriterier i etapper, sortera efter den minst viktiga nyckeln först och den viktigaste nyckeln sist.

Metoden sort() körs i O(n log n) tid i de värsta och genomsnittliga fallen. På data som redan är mestadels ordnad närmar den sig O(n), eftersom den underliggande algoritmen detekterar och återanvänder befintliga sorterade körningar istället för att omsortera dem.

Skicka en nyckel som konverterar varje element under jämförelsen, till exempel nums.sort(key=int). Listan sorterar sedan efter numeriskt värde snarare än efter tecken, så '10' sorterar korrekt efter '9'. De lagrade elementen stannar kvar som strängar; endast jämförelsen använder deras heltal.

Sortering ordnar förutsägelser efter poäng eller sannolikhet, väljer topp-k-resultat i ranknings- och rekommendationssystem och ordnar poster under dataförberedelse. Maskininlärningspipelines sorterar ofta funktionsvärden eller modellutdata före utvärdering, så den inbyggda sort()-metoden är ett vanligt förbehandlingssteg.

Ja. GitHub Copilot och agentic AI-assistenter genererar sort()- och sorted()-anrop, inklusive nyckelfunktioner och lambda-uttryck, från en kort kommentar. De kan omstrukturera loopar till enskilda sorteringssatser, men du bör fortfarande testa ordningen och bekräfta resultatet i edge-fall.

Sammanfatta detta inlägg med: