Python List sort() med eksempler

โšก Smart oppsummering

Python list sort() arrangerer elementene i en liste pรฅ plass, stigende som standard eller synkende gjennom reverse-parameteren, mens en valgfri nรธkkelfunksjon sorterer etter tilpassede kriterier som lengde, tupelfelt eller brukerdefinerte funksjoner.

  • ๐Ÿ”˜ Syntaks: sort()-metoden aksepterer valgfrie nรธkkel- og reversparametere og endrer den opprinnelige listen uten รฅ opprette en kopi.
  • โ˜‘๏ธ Ordrekontroll: Hvis du setter den omvendte parameteren til True, sorteres verdiene fra hรธyeste til laveste i stedet for standard stigende rekkefรธlge.
  • โœ… Nรธkkelparameter: En nรธkkelfunksjon som len sorterer elementer etter en avledet verdi som strenglengde eller et tupelfelt.
  • ๐Ÿงช sorter vs. sortert: sort()-metoden endrer listen pรฅ plass og returnerer None, mens sorted() returnerer en ny liste og beholder originalen.
  • ๐Ÿ› ๏ธ Tilpassede kriterier: Lambda-uttrykk og brukerdefinerte funksjoner lar sort() sortere tupler, ordbรธker og navngitte tupler etter et hvilket som helst valgt attributt.
  • ๐Ÿค– AI-arbeidsflyter: Maskinlรฆringsprosesser sorterer prediksjoner etter poengsum og velger toppresultater fรธr rangering eller evaluering.

Python List sort()

Hva er sort()-metoden i Python?

sort()-funksjonen i Python hjelper med รฅ sortere en liste i stigende eller synkende rekkefรธlge. Den kan brukes til รฅ sortere en numerisk liste, tupler og en strengliste. Den oppretter ikke en separat liste, men endrer eller sorterer originalen.

Syntaks for sorteringsmetode i Python

Sorteringsfunksjonen har fรธlgende syntaks:

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

Sorteringsfunksjonen har to valgfrie parametere, nemlig:

  • Nรธkkel:- Denne brukes til รฅ sortere en funksjon basert pรฅ et sorteringskriterium.
  • Reverse: โ€“ den tar verdien som enten sann eller usann. Hvis sann, sorterer denne egendefinerte funksjonen listen i synkende rekkefรธlge.

Sortering av en liste i stigende rekkefรธlge ved hjelp av Sorter-metoden i Python

In Python, sorterer sorteringsfunksjonen som standard enhver liste i stigende rekkefรธlge. En liste i stigende rekkefรธlge har den laveste verdien pรฅ venstre side, og den hรธyeste verdien kommer pรฅ hรธyre side.

Eksempel:

Python kode:

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

Utgang:

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

Code Forklaring:

  • Listen ovenfor er en tilfeldig definert strengliste.
  • Den slags funksjon av Python hjelper til med รฅ sortere den tilfeldige listen i stigende rekkefรธlge, med den laveste lengden pรฅ ordet pรฅ venstre side og den hรธyeste lengden pรฅ ordet pรฅ hรธyre side.

Sortering av en liste i synkende rekkefรธlge

Sorteringsfunksjonen lar ogsรฅ en liste sorteres i synkende rekkefรธlge. Det kan defineres som rekkefรธlgen hvor listen starter med den hรธyeste verdien og slutter med den laveste verdien.

Den omvendte parameteren til sorteringsfunksjonen er tilordnet som sann for รฅ fรฅ en liste sortert i synkende rekkefรธlge.

La oss se pรฅ eksemplet nedenfor:

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)

Utgang:

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

Merk: Sรธrg for at tilordningen av ordet "True" til den omvendte parameteren starter med stor "T" for รฅ unngรฅ kjรธretidsfeil.

Sortering av en liste over tupler ved รฅ bruke sorteringsmetoden i Python

Python Tupler er samlinger av uforanderlige elementer som fรธlger en ordnet sekvens. Python's sorteringsfunksjon kan brukes til รฅ sortere en liste over tupler ved hjelp av en tilpasset funksjon og lambda-uttrykk.

En tilpasset funksjon kan opprettes uten navn og representeres av et lambda-uttrykk. Syntaksen for lambda-uttrykk er som fรธlger:

Syntaks:

Lambda arguments: expression

Syntaksen ovenfor tilsvarer pythonkoden nedenfor:

def name (arguments):
return expression

Her er et eksempel pรฅ en tuppel og en tilpasset funksjon for รฅ illustrere hvordan en sorteringsfunksjon med nรธkkelparametere bidrar til รฅ sortere elementene i en tuppel:

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)

Utgang:

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

Code Forklaring:

  • Den omvendte parameteren er definert som sann for รฅ sortere tuppelen i synkende rekkefรธlge.
  • Den tilpassede funksjonen tar det andre elementet i tupelen.
  • Dette brukes som nรธkkelen til sorteringsfunksjonen.

La oss se pรฅ eksemplet nedenfor som bruker lambda-uttrykk:

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)

Utgang:

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

Forklaring:

  • Lambda-uttrykket hjelper deg รฅ sortere elementene i tuppelen fra hรธy til lav med nรธkkelen som andre element i tupelen.
  • Programmet vil sjekke den hรธyeste verdien av det andre elementet i tupelen.

Sortering av listeelementer med Len som nรธkkelparameter

Lenge er en innebygd funksjon som bestemmer lengden pรฅ elementet. Lengden som bestemmes kan brukes til indeksering i sorteringsfunksjonen. For รฅ gjรธre dette tilordner vi Lenge til Python sorteringsfunksjonens nรธkkelparameter.

Fรธlgende Python koden illustrerer hvordan du bruker Len-funksjonen med sorteringsfunksjonen.

Python Code:

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

Utgang:

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

Code Forklaring:

Sortere listeelementer ved hjelp av Len

  • Lengden pรฅ elementet blir en indeks for nรธkkelparameteren for รฅ ordne listen i stigende rekkefรธlge.
  • Len-funksjonen estimerer lengden pรฅ hvert element som finnes i basislisten.
  • Den holder det korteste elementet pรฅ venstre side og det stรธrste elementet pรฅ hรธyre side.
  • Her har ordene alto og java lengder pรฅ 4, som er ordnet fรธrst i listen, etterfulgt av Guru99, som har en lengde pรฅ 6.

Dette eksemplet illustrerer konseptet med den reverserte parameteren i sorteringsfunksjonen 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)

Utgang:

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

Sortering av listeelementer med brukerdefinert funksjon som nรธkkelparameter

Du kan ogsรฅ bruke en brukerdefinert funksjon som en nรธkkelparameter for รฅ 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)

Utgang:

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:

  • En brukerdefinert funksjon opprettes for รฅ returnere รฅret
  • Nรธkkelparameteren tar en brukerdefinert funksjon som et kriterium.
  • Sorteringsfunksjonen vil ordne listen i stigende rekkefรธlge basert pรฅ verdien av elementet "รฅr".

Forskjellen mellom sorteringsmetode og sortert metode i Python

Etter รฅ ha jobbet gjennom eksemplene ovenfor, er det nyttig รฅ sammenligne de to sorteringsverktรธyene direkte. Fรธr forskjellene oppsummeres, la oss forstรฅ syntaksen til Sorted-metoden.

Python Syntaks:

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

Code Forklaring:

  • Den sorterte funksjonen sorterer listen i enten stigende eller synkende rekkefรธlge.
  • Funksjonen aksepterer tre parametere, hvorav to parametere er av valgfri type og en parameter er av รธnsket type.
  • Parameter listenavn kreves ved bruk av Sortert-metoden.
  • Den sorterte metoden kan ta hvilken som helst type itererbar liste som input.
  • Nรธkkelparametere og omvendte parametere er valgfrie parametere under den sorterte metoden i Python.

Her er et eksempel pรฅ bruk av funksjonen sortert og sortert 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)

Utgang:

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 opprinnelige listen sendes som en nรธdvendig parameter for den sorterte funksjonen.
  • Sortert-metoden returnerer en ny liste i tillegg til den opprinnelige listen.
  • Siden ingen ekstra parametere sendes til den sorterte metoden, er den nye listen som standard sortert i stigende rekkefรธlge.
  • Sorteringsfunksjonen lager ingen ny liste.

Fรธlgende er punktene om viktige likheter og forskjeller:

Sortert funksjon Sorteringsfunksjon
Sortert funksjon i Python er en innebygd funksjon som tar listenavn som en nรธdvendig parameter. Sorteringsfunksjonen tar ikke den opprinnelige listen som en parameter.
Sortert metode returnerer en ny liste Sorteringsfunksjonen returnerer ikke en ny liste
Sortert funksjon skal brukes for iterable lister Sorteringsfunksjonen skal brukes for ikke-iterbare lister.
Den endrer ikke den opprinnelige listen og lar oss beholde originale data. Sorteringsfunksjonen modifiserer den opprinnelige funksjonen og opptar derfor mindre minneplass

Nรฅr skal man bruke sorteringsmetoden eller sorteringsmetoden?

La oss ta et eksempel som krever at lรธpsdata sorteres. Programmet bruker bib-nummeret og tiden det tar i sekunder for รฅ fullfรธre lรธpet.

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)

Utgang:

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 er sortert med bรฅde sorteringsfunksjonen og sortert funksjon.
  • Basislisten gรฅr tapt nรฅr sorteringsfunksjonen brukes.
  • Sorteringsfunksjonen skal ikke brukes pรฅ det opprinnelige datasettet. Den bรธr brukes nรฅr det finnes en kopiversjon av det originale datasettet.
  • Sortert-funksjonen beholder den opprinnelige listen. Den overstyrer den ikke.
  • Dette tilbyr bedre traceffektivitet og effektiv datahรฅndtering.

Spรธrsmรฅl og svar

Gi key=str.lower til sort()-metoden, for eksempel names.sort(key=str.lower). Hver streng sammenlignes med smรฅ bokstaver, sรฅ 'Apple' og 'banana' sorteres alfabetisk uavhengig av store bokstaver. De opprinnelige store og smรฅ bokstavene til hvert element bevares i den endelige sorterte listen.

Det fungerer รฅ sortere en liste over alle tall eller alle strenger, men รฅ blande urelaterte typer som heltall og strenger genererer en TypeError fordi Python kan ikke sammenligne dem. Konverter verdiene til รฉn sammenlignbar type fรธrst, eller send en nรธkkelfunksjon som returnerer sammenlignbare nรธkler.

Python historisk brukt Timsort, en hybrid av merge-sortering og insertion-sortering. Siden versjon 3.11 bruker tolken Powersort, en Timsort-avledet variant med en smartere merge-policy. Begge er stabile og kjรธrer i O(n log n) tid i verste fall.

Ja. sort()-metoden er stabil, slik at elementer som sammenlignes likt beholder sin opprinnelige relative rekkefรธlge. Dette lar deg sortere etter flere kriterier i etapper, sortering pรฅ den minst viktige nรธkkelen fรธrst og den viktigste nรธkkelen sist.

sort()-metoden kjรธrer i O(n log n) tid i verste og gjennomsnittlige tilfeller. Pรฅ data som allerede er stort sett ordnet, nรฆrmer den seg O(n), fordi den underliggende algoritmen oppdager og gjenbruker eksisterende sorterte kjรธringer i stedet for รฅ sortere dem pรฅ nytt.

Send en nรธkkel som konverterer hvert element under sammenligning, for eksempel nums.sort(key=int). Listen sorterer deretter etter numerisk verdi i stedet for etter tegn, slik at '10' sorterer riktig etter '9'. De lagrede elementene forblir som strenger; bare sammenligningen bruker heltallsverdien.

Sortering arrangerer prediksjoner etter poengsum eller sannsynlighet, velger topp-k-resultater i rangerings- og anbefalingssystemer, og sorterer poster under dataforberedelse. Maskinlรฆringsrรธrledninger sorterer ofte funksjonsverdier eller modellutganger fรธr evaluering, sรฅ den innebygde sort()-metoden er et vanlig forbehandlingstrinn.

Ja. GitHub Copilot og agentic AI-assistenter genererer sort()- og sorted()-kall, inkludert nรธkkelfunksjoner og lambda-uttrykk, fra en kort kommentar. De kan omstrukturere lรธkker til enkle sorteringssetninger, men du bรธr fortsatt teste rekkefรธlgen og bekrefte resultatet pรฅ kanttilfeller.

Oppsummer dette innlegget med: