Python List sort() med eksempler

⚡ Smart opsummering

Python list sort() arrangerer elementerne i en liste på plads, stigende som standard eller faldende via den omvendte parameter, mens en valgfri tastfunktion sorterer efter brugerdefinerede kriterier såsom længde, tupelfelter eller brugerdefinerede funktioner.

  • 🔘 Syntaks: Sort()-metoden accepterer valgfrie nøgle- og reverse-parametre og ændrer den oprindelige liste uden at oprette en kopi.
  • ☑️ Ordrekontrol: Hvis parameteren omvendt indstilles til True, sorteres værdier fra højeste til laveste i stedet for den standardmæssige stigende rækkefølge.
  • ✅ Nøgleparameter: En nøglefunktion som f.eks. len sorterer elementer efter en afledt værdi som strenglængde eller et tupelfelt.
  • 🧪 sorter vs. sorteret: sort()-metoden ændrer listen på plads og returnerer None, mens sorted() returnerer en ny liste og beholder originalen.
  • 🛠️ Brugerdefinerede kriterier: Lambda-udtryk og brugerdefinerede funktioner lader sort() sortere tupler, ordbøger og navngivne tupler efter en hvilken som helst valgt attribut.
  • 🤖 AI-arbejdsgange: Maskinlæringspipelines sorterer forudsigelser efter score og udvælger de bedste resultater før rangering eller evaluering.

Python Liste sort()

Hvad er sort() metoden i Python?

sort()-funktionen i Python hjælper med at sortere en liste i stigende eller faldende rækkefølge. Den kan bruges til at sortere en numerisk liste, tupler og en strengliste. Den opretter ikke en separat liste, men ændrer eller sorterer originalen.

Syntaks for sorteringsmetode i Python

Sorteringsfunktionen har følgende syntaks:

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

Sorteringsfunktionen har to valgfrie parametre, nemlig:

  • Nøgle:- Dette bruges til at sortere en funktion baseret på et sorteringskriterium.
  • Reverse: – den tager værdien som enten sand eller falsk. Hvis sand, sorterer denne brugerdefinerede funktion listen i faldende rækkefølge.

Sortering af en liste i stigende rækkefølge ved hjælp af sorteringsmetoden i Python

In Python, sorterer sorteringsfunktionen som standard enhver liste i stigende rækkefølge. En liste i stigende rækkefølge har den laveste værdi på venstre side, og den højeste værdi kommer på højre side.

Eksempel:

Python kode:

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 Forklaring:

  • Ovenstående liste er en tilfældigt defineret strengliste.
  • Den slags funktion af Python hjælper med at sortere den tilfældige liste i stigende rækkefølge, med den laveste længde af ordet i venstre side og den højeste længde af ordet i højre side.

Sortering af en liste i faldende rækkefølge

Sorteringsfunktionen gør det også muligt at sortere en liste i faldende rækkefølge. Det kan defineres som ordren hvor listen starter med den højeste værdi og slutter med den laveste værdi.

Den omvendte parameter for sorteringsfunktionen er tildelt som sand for at få en liste sorteret i faldende rækkefølge.

Lad os se på nedenstående eksempel:

Python kode:

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]

Bemærk: Sørg for, at tildelingen af ​​ordet "True" til den omvendte parameter starter med stort "T" for at undgå driftstidsfejl.

Sortering af en liste over tupler ved hjælp af sorteringsmetoden i Python

Python tupler er samlinger af uforanderlige elementer, der følger en ordnet sekvens. Python's sorteringsfunktion kan bruges til at sortere en liste over tupler ved hjælp af en tilpasset funktion og lambda-udtryk.

En brugerdefineret funktion kan oprettes uden navn og repræsenteres af et lambda-udtryk. Syntaksen for Lambda-udtrykket er som følger:

Syntaks:

Lambda arguments: expression

Ovenstående syntaks svarer til nedenstående python-kode:

def name (arguments):
return expression

Her er et eksempel på en tuple og en tilpasset funktion, der illustrerer, hvordan en sorteringsfunktion med nøgleparametre hjælper med at sortere elementerne i en tuple:

Python kode:

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 Forklaring:

  • Den omvendte parameter er defineret som sand for at sortere tuplen i faldende rækkefølge.
  • Den tilpassede funktion tager det andet element i tuplet.
  • Dette bruges som nøglen til sorteringsfunktionen.

Lad os se på nedenstående eksempel, der gør brug af lambda-udtryk:

Python kode:

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

Forklaring:

  • Lambda-udtrykket hjælper dig med at sortere elementerne i tuplen fra høj til lav med nøglen som det andet element i tuplen.
  • Programmet vil kontrollere den højeste værdi af det andet element i tuplet.

Sortering af listeelementer med Len som nøgleparameter

Len er en indbygget funktion, der bestemmer længden af ​​et element. Den bestemte længde kan bruges til indeksering i sorteringsfunktionen. For at gøre dette tildeler vi Len til Python sorteringsfunktionens nøgleparameter.

Følgende Python kode illustrerer, hvordan man bruger 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)

Output:

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

Code Forklaring:

Sortering af listeelementer ved hjælp af Len

  • Længden af ​​elementet bliver et indeks for nøgleparameteren for at arrangere listen i stigende rækkefølge.
  • Len-funktionen estimerer længden af ​​hvert element, der findes i basislisten.
  • Det holder det korteste element i venstre side og det største element i højre side.
  • Her har ordene alto og java længder på 4, som er arrangeret først på listen, efterfulgt af Guru99, som har en længde på 6.

Dette eksempel illustrerer konceptet med den omvendte parameter i sorteringsfunktionen som vist nedenfor:

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']

Sortering af listeelementer ved hjælp af brugerdefineret funktion som en nøgleparameter

Du kan også bruge en brugerdefineret funktion som en nøgleparameter til at sortere en liste. Her er et eksempel:

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 Forklaring:

  • Der oprettes en brugerdefineret funktion for at returnere året
  • Nøgleparameteren tager en brugerdefineret funktion som et kriterium.
  • Sorteringsfunktionen vil arrangere listen i stigende rækkefølge baseret på værdien af ​​elementet "år".

Forskellen mellem sorteringsmetoden og sorteret metode i Python

Efter at have gennemgået ovenstående eksempler, er det nyttigt at sammenligne de to sorteringsværktøjer direkte. Før forskellene opsummeres, lad os forstå syntaksen for Sorted-metoden.

Python Syntaks:

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

Code Forklaring:

  • Den sorterede funktion sorterer listen i enten stigende eller faldende rækkefølge.
  • Funktionen accepterer tre parametre, hvoraf to parametre er af valgfri type, og en parameter er af den ønskede type.
  • Parameter listenavn er påkrævet, når du bruger metoden Sorteret.
  • Den Sorterede metode kan tage enhver type itererbar liste som input.
  • Nøgleparametre og omvendte parametre er valgfrie parametre under den sorterede metode i Python.

Her er et eksempel på brug af funktionen sorteret og sorteret i Python:

Python kode:

#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 Forklaring:

  • Den oprindelige liste videregives som en nødvendig parameter for den sorterede funktion.
  • Den Sorterede metode returnerer en ny liste udover den oprindelige liste.
  • Da der ikke overføres yderligere parametre til den sorterede metode, er den nye liste som standard sorteret i stigende rækkefølge.
  • Sorteringsfunktionen laver ikke nogen ny liste.

Følgende er punkterne om de vigtigste ligheder og forskelle:

Sorteret funktion Sorteringsfunktion
Sorteret funktion i Python er en indbygget funktion, der tager listenavn som en påkrævet parameter. Sorteringsfunktionen tager ikke den originale liste som en parameter.
Sorteret metode returnerer en ny liste Sorteringsfunktionen returnerer ikke en ny liste
Sorteret funktion skal bruges til iterable lister Sorteringsfunktionen skal bruges til ikke-iterbare lister.
Det ændrer ikke den originale liste og giver os mulighed for at beholde originale data. Sorteringsfunktionen ændrer den oprindelige funktion og optager derfor mindre hukommelsesplads

Hvornår skal man bruge sorteringsmetoden eller sorteringsmetoden?

Lad os tage et eksempel, der kræver, at racedata skal sorteres. Programmet bruger bib-nummeret og tiden det tager i sekunder for at afslutte løbet.

Python kode:

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 Forklaring:

  • Basislisten sorteres ved hjælp af både sorteringsfunktionen og sorteringsfunktionen.
  • Basislisten går tabt, når sorteringsfunktionen anvendes.
  • Sorteringsfunktionen bør ikke anvendes på det originale datasæt. Det skal bruges, når der er en kopiversion af det originale datasæt.
  • Funktionen Sorteret bevarer den originale liste. Det tilsidesætter det ikke.
  • Dette tilbyder bedre traceffektivitet og datahåndtering.

Ofte Stillede Spørgsmål

Giv key=str.lower til sort()-metoden, for eksempel names.sort(key=str.lower). Hver streng sammenlignes med små bogstaver, så 'Apple' og 'banana' sorteres alfabetisk uanset store bogstaver. Det originale store bogstav i hvert element bevares i den endelige sorterede liste.

Sortering af en liste over alle tal eller alle strenge fungerer, men at blande ikke-relaterede typer såsom heltal og strenge giver en TypeError, fordi Python kan ikke sammenligne dem. Konverter først værdierne til én sammenlignelig type, eller send en nøglefunktion, der returnerer sammenlignelige nøgler.

Python historisk anvendt Timsort, en hybrid af merge sortering og insertion sortering. Siden version 3.11 bruger fortolkeren Powersort, en Timsort-afledt variant med en smartere mergepolitik. Begge er stabile og kører i værste fald i O(n log n) tid.

Ja. sort()-metoden er stabil, så elementer, der sammenlignes lige, beholder deres oprindelige relative rækkefølge. Dette giver dig mulighed for at sortere efter flere kriterier i etaper, hvor du sorterer efter den mindst vigtige nøgle først og den vigtigste nøgle sidst.

sort()-metoden kører i O(n log n) tid i de værst tænkelige og gennemsnitlige tilfælde. På data, der allerede er for det meste ordnet, nærmer den sig O(n), fordi den underliggende algoritme registrerer og genbruger eksisterende sorterede kørsler i stedet for at omsortere dem.

Send en nøgle, der konverterer hvert element under sammenligningen, for eksempel nums.sort(key=int). Listen sorterer derefter efter numerisk værdi i stedet for efter tegn, så '10' sorterer korrekt efter '9'. De gemte elementer forbliver som strenge; kun sammenligningen bruger deres heltalsværdi.

Sortering arrangerer forudsigelser efter score eller sandsynlighed, udvælger top-k-resultater i rangerings- og anbefalingssystemer og sorterer poster under dataforberedelse. Maskinlæringspipelines sorterer ofte funktionsværdier eller modeloutput før evaluering, så den indbyggede sort()-metode er et almindeligt forbehandlingstrin.

Ja. GitHub Copilot og agentic AI-assistenter genererer sort()- og sorted()-kald, inklusive nøglefunktioner og lambda-udtryk, fra en kort kommentar. De kan omstrukturere løkker til enkelt sorteringssætninger, selvom du stadig bør teste rækkefølgen og bekræfte resultatet på edge-tilfælde.

Opsummer dette indlæg med: