Forstå sortert funksjon i Python: En enkel veiledning

En av de store fordelene ved å bruke Python er enkelheten. Det er enkelt å jobbe med det fordi standardbiblioteket har mange nyttige funksjoner. En slik funksjon er den sorterte funksjonen.

Denne funksjonen brukes til å sortere iterables etter en eller annen rekkefølge. Uten en slik funksjon må man skrive kode som implementerer en sorteringsalgoritme som Bubble Sort eller Insertion Sort. Dette er ofte vanskelig, men Python gir en enklere måte, som vi vil dekke i denne artikkelen.

Introduksjon til den sorterte funksjonen

Den sorterte funksjonen er en funksjon som sorterer iterables i Python. En iterabel er en hvilken som helst verdi du kan gå over. Eksempler på iterables inkluderer strenger, lister, tupler og sett. Disse iterablene er ofte uordnet, og sortering setter verdiene deres i en bestemt rekkefølge. Bestillingsverdier er nyttig fordi:

  • Å søke med verdier er raskere og mer effektivt ved å bruke algoritmer som binært søk. Binært søk krever imidlertid at verdiene sorteres først.
  • For å vise verdier. Noen ganger vil brukere gjerne se informasjon sortert, for eksempel den laveste prisen først eller det siste innlegget først. Dette vil kreve implementering av en eller annen måte å sortere en liste over verdier på.
  • Når du utfører statistisk analyse, for eksempel å finne den hyppigst forekommende verdien i et sett. Det er lettere å gjøre dette når verdiene er sortert i rekkefølge.

Bruksveiledning for sortert funksjon

Som nevnt tidligere, fungerer den sorterte funksjonen med alle iterables. I sin tur returnerer den en liste som er sortert. Dette er viktig å merke seg – selv om inndataene kan være gjentakelige, må returverdien alltid være en liste.

  Hvordan kaste folk i gjengdyr

Syntaks for sortert funksjon

Funksjonssignaturen til den sorterte funksjonen er som følger:

sorted(iterable, key=None, reverse=False)

Som du kan se, er det eneste nødvendige argumentet det iterable, som vil bli sortert.

Følgende argument er nøkkelen. Nøkkelen er en funksjon som vil bli brukt til å transformere hvert element i iterablen for å oppnå en verdi som skal brukes til sortering. Dette vil være nyttig for å sortere en liste over ordbøker, som du vil se senere. Standardverdien er ingen, så den vil ikke bruke noen funksjon med mindre det er spesifisert.

Det siste argumentet er det motsatte argumentet. Når satt til sann, vil elementene bli sortert i omvendt rekkefølge.

I neste avsnitt vil jeg bruke eksempler for å demonstrere hvordan du bruker funksjonen.

Eksempler på sortert funksjonsbruk

Liste over tall

Det enkleste tilfellet med sortering av verdier er å sortere en liste med tall. Tenk på følgende kodeeksempel:

# A list of unsorted values
numbers = [8, 4, 3, 9, 2, 0, 3]

# Sorting the numbers
sorted_numbers = sorted(numbers)

# Outputting the sorted values
print(sorted_numbers)

Utgangen vil være:

[0, 2, 3, 3, 4, 8, 9]

Som du kan se, er verdiene sortert i stigende rekkefølge. Du ville satt revers til sann hvis du ville sortere dem i synkende rekkefølge. Derfor vil linje 4 i forrige kodeeksempel være:

sorted_numbers = sorted(numbers, reverse=True)

Resultatet av å kjøre det modifiserte programmet vil være:

[9, 8, 4, 3, 3, 2, 0]

Liste over strenger

Den sorterte funksjonen støtter mer enn bare tall. Du kan også sortere strenger. For å sortere strenger i en liste, sammenlignes de første tegnene i strengene. Sammenligningene utføres på karakterenes ASCII-verdier. For eksempel vil «hei» komme foran ordet «verden» fordi ASCII-verdien til «h» er 104, mindre enn ASCII-verdien til «w», 119.

Hvis en eller flere strenger har det samme første tegnet, sammenlignes deres andre og påfølgende tegn inntil en rekkefølge blir funnet. Her er et kodeeksempel der vi sorterer folks navn.

# Creating a list of names
members_list = ['bob', 'dave', 'charlie', 'alice']

# Sorting the names
sorted_members_list = sorted(members_list)

# Printing the names
print(sorted_members_list)

Dette vil produsere følgende utgang:

['alice', 'bob', 'charlie', 'dave']

Fordi ASCII-verdier brukes, avhenger rekkefølgen av strenger av hvilket tegn som kommer først i ASCII-tabellen. For eksempel vil en stor bokstav komme før en liten fordi store bokstaver kommer før små bokstaver i ASCII. Her er en komplett ASCII-tabell for referanse:

  Slik bruker du tekstsnarveier i Google Dokumenter

Kilde: commons.wikimedia.org

Andre iterables – strenger, tupler og sett

Som jeg nevnte, fungerer den sorterte funksjonen med alle slags iterables. De samme reglene gjelder for hvordan verdiene i iterablene skal sorteres. Her er et eksempel:

# Printing a sorted string
print(sorted("dijkstra"))

# Printing a sorted tuple of values
print(sorted((3, 4, 2, 1, 5, 0)))

# Printing a sorted set of values
print(sorted(set([4, 5, 5, 1, 3, 8, 9])))

Resultatet av dette vil være:

['a', 'd', 'i', 'j', 'k', 'r', 's', 't']
[0, 1, 2, 3, 4, 5]
[1, 3, 4, 5, 8, 9]

Som du kan se, er utgangen i hvert tilfelle en liste.

Liste over ordbøker

Du kan også bruke den sorterte funksjonen for å sortere en liste over ordbøker. Det er imidlertid litt mer komplisert å sortere ordbøker. Dette er fordi, i motsetning til tall eller strenger, har en ordbok flere egenskaper, hver like gyldig for sammenligning.

Så for å sortere ordbøker, spesifiserer du en funksjon som vil oppsummere hele ordboken til én verdi som skal brukes til sammenligning. Denne funksjonen vil bli sendt til den sorterte funksjonen som nøkkelargument. Her er et eksempel for å illustrere:

people = [
        { 'name': 'Alice', 'age': 27 },
        { 'name': 'Bob', 'age':  23 },
        { 'name': 'Charlie', 'age': 25}
]

people_sorted_by_age = sorted(people, key=lambda person: person['age'])
print(people_sorted_by_age)

I dette eksemplet har vi tre personer representert ved et ordbokobjekt. Hvert objekt har et navn og aldersattributt. Vi ønsker å sortere folk etter alder. Derfor når vi kaller den sorterte funksjonen, sender vi inn en funksjon som nøkkelargument.

Denne funksjonen vil ta inn en persons ordbokobjekt og returnere personens alder. Returverdien til denne nøkkelen vil bli brukt til sortering. Derfor er hele ordboken oppsummert til et enkelt heltall som kan sammenlignes. For enkelhets skyld har jeg brukt en lambda-funksjon for å definere nøkkelargumentet.

  iPhone + AI = 🔥

Å kjøre koden vil produsere følgende utgang:

[{'name': 'Bob', 'age': 23}, {'name': 'Charlie', 'age': 25}, {'name': 'Alice', 'age': 27}]

Key Argument Use Case

Nøkkelargumentet trenger ikke brukes kun ved sortering av ordbøker. Du kan bruke den på alle verdier. Bruken er å gi en nøkkel som kan brukes til å sortere verdier. Her er eksempler på bruk:

  • Sortere verdier ved å definere en nøkkelfunksjon som tar inn verdien og returnerer lengden på verdien.
  • Sortering av strenger i en liste på en måte som ikke skiller mellom store og små bokstaver. For å gjøre dette kan hver streng i listen konverteres til små bokstaver. Dette kan oppnås ved å definere en nøkkelfunksjon som tar inn nøkkelverdien til en streng og returnerer en liten versjon av strengen.
  • Sortering av verdier basert på en sammensatt verdi som kombinerer verdiene til andre oppføringer.

Kjøretidskompleksiteten til den sorterte funksjonen

Den sorterte funksjonen har en kjøretidskompleksitet på O(n log n), der n er antall elementer i den iterable inndata. Denne kompleksiteten oppstår fordi funksjonen bruker Timsort-algoritmen, som er en hybrid sorteringsalgoritme basert på flettesortering og innsettingssortering.

Romkompleksiteten til funksjonen er O(n), der n fortsatt er antall elementer i inngangen. Dette er fordi en ny liste opprettes og returneres.

Sortert funksjon vs. sorteringsfunksjon

Et annet alternativ for å sortere verdier er sorteringsfunksjonen. Denne delen vil forklare de viktigste forskjellene mellom de sorterte og sorteringsfunksjonene.

  • Sorteringsfunksjonen endrer den iterable på plass, mens den sorterte funksjonen oppretter en ny liste og returnerer den.
  • Fordi endringene er utført på plass, krever sortering at inndata er en liste. På den annen side kan sortert ta hvilken som helst iterabel som input som deretter vil bli brukt til å lage en ny liste som vil bli endret og returnert.

Siste ord

I denne artikkelen dekket vi den sorterte funksjonen – hva den er, hvordan du bruker den, og de forskjellige argumentene den tar inn. Vi dekket også forskjellige brukseksempler av funksjonen og dens kjøretidskompleksitet og sammenlignet den med sorteringsfunksjonen.

Deretter vil du kanskje lese artikkelen vår om Pythons sumfunksjon.