Listeforståelse i Python – med eksempler

I Python hjelper listeforståelser deg med å lage nye lister fra eksisterende iterables, som lister, strenger og tupler.

Deres kortfattede syntaks lar deg lage nye lister på bare én linje med kode. Og denne opplæringen vil lære deg hvordan du kan gjøre det.

I løpet av de neste minuttene lærer du:

  • Hvordan lage en ny liste med for loops,
  • Syntaksen for bruk av listeforståelser i Python, og
  • Hvordan endre listeforståelser med if condition-setning.

I tillegg vil du også kode flere eksempler som vil hjelpe deg å forstå listeforståelsen bedre.

La oss dykke inn.🌊

Hvordan lage Python-lister ved å bruke for løkker

Anta at du har et listetall med tallnumre. Og du vil lage en annen liste som inneholder kuben av alle tallene i tall. Slik gjør du det ved å bruke en for-løkke i Python:

nums = [2,3,5,7]
num_cubes = []
for num in nums:
  num_cubes.append(num**3)

print(num_cubes)

# Output
[8, 27, 125, 343]

I koden ovenfor har vi følgende trinn:

  • Initialiser en tom liste num_cubes.
  • Gå gjennom talllisten.
  • Få tilgang til hvert tall num, og beregne dens terning ved å bruke eksponentieringsoperatoren: num**3.
  • Til slutt legger du til den kuttede verdien til listen num_cubes

Merk: I Python brukes eksponentieringsoperatoren ** med syntaksen: num**pow—tallet num heves til potensen pow.

Du kan imidlertid gjøre dette lettere ved å bruke listeforståelse i Python. La oss fortsette å lære syntaksen.

Python-listeforståelsessyntaks

Den generelle syntaksen for listeforståelse er vist nedenfor.

<new_list> = [<expression> for <item> in <iterable>]

La oss analysere syntaksen ovenfor.

  • I Python er lister avgrenset med et par firkantede parenteser []– Derfor må du legge ved listeforståelseserklæringen [].
  • i betyr at du går gjennom en iterable. Ethvert Python-objekt som du kan gå gjennom og få tilgang til individuelle elementer – som lister, tupler og strenger er iterable.
  • er utdataene du vil beregne for hvert i .

Og dette høres enkelt ut, ikke sant?

I hovedsak vil du gjøre noe for alle elementene i listen (eller gjentakbare) for å få en ny liste.

Ved å bruke dette kan vi forenkle syntaksen, som vist på bildet nedenfor.

Python-listeforståelsessyntaks (bilde av forfatter)

Nå som du har lært syntaksen, er det på tide å begynne å kode. Du kan bruke tipsbilk.nets online Python IDE for å følge disse eksemplene. Eller du kan kjøre dem på din lokale maskin.

Python-listeforståelseseksempler

I forrige seksjon opprettet du en ny liste num_cubes fra nums. La oss starte med å omskrive det ved å bruke listeforståelse.

Bruke listeforståelse med tall

La oss nå bruke den forenklede syntaksen som følger:

  • : Her må du kube hvert tall. Så erstatt med num**3.
  • : Løkkevariabelen er num – de individuelle tallene i listen.
  • : Den eksisterende listen vi har er nums.
  • Og [num**3 for num in nums] er det endelige uttrykket. ✅

Setter vi alt sammen, har vi følgende kodebit:

num_cubes = [num**3 for num in nums]
print(num_cubes)

# Output
[8, 27, 125, 343]

Gratulerer, du har kodet din første listeforståelse.🎉

Gå videre, la oss jobbe med Python-strenger.

Bruke listeforståelse med strenger

Anta at du har listeforfatterne – du kan skrive om listen nedenfor med favorittforfatterne dine.😄

authors = ["jane austen","george orwell","james clear","cal newport"]

Legg merke til hvordan forfatternes navn er med små bokstaver i listen ovenfor. Vi ønsker nå å formatere dem i tittelen og lagre dem i en ny liste kalt forfatter_liste.

Merk: I Python, strengmetoden tittel() godtar en streng som et argument, og returnerer en kopi av strengen formatert i tittelen. Det vil si at den første bokstaven i hvert ord er stor: Fornavn Etternavn

Så her er alt du trenger å gjøre:

  • gå gjennom forfatterlisten og for hver forfatter i listen,
  • ring author.title() for å få en kopi av strengen uten tittel.

Og Python-koden for dette er vist nedenfor:

authors = ["jane austen","george orwell","james clear","cal newport"]

author_list = [author.title() for author in authors]
print(author_list)

# Output
['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']

I utdataene ovenfor, observer hvordan navnene på alle forfatterne har blitt formatert i tittelen – som er det vi ønsket.

Bruke listeforståelse med flere lister

Så langt har du lært hvordan du bruker listeforståelse til å lage nye lister fra én eksisterende liste. La oss nå lære hvordan du oppretter en ny liste fra flere lister.

Tenk for eksempel på dette problemet: Du har to lister l_arr og b_arr som inneholder lengdene og breddene til 4 rektangler.

Og du må lage et nytt listeområde som inkluderer arealet til disse 4 rektanglene. Husk at areal = lengde * bredde.

l_arr = [4,5,1,3]
b_arr = [2,1,7,9]

Du trenger elementer fra begge listene (l_arr og b_arr) for å beregne arealet. Og du kan gjøre det ved å bruke Pythons zip()-funksjon.

Merk: I Python tar zip()-funksjonen inn en eller flere iterables som argumenter med syntaksen zip(*iterables). Den returnerer deretter en iterator av tupler, der tuppelen i inneholder elementet i fra hver av de iterablene.

Følgende bilde beskriver dette i detalj. Du har 4 verdier i l_arr og b_arr, så indeksområdet er fra 0 til 3. Som du kan se, inneholder tuppelen 0 l_arr[0] og b_arr[0]tuppel 1 inneholder l_arr[1] og b_arr[1]og så videre.

Python zip() funksjon (bilde av forfatter)

Derfor kan du gå gjennom zip(l_arr,b_arr) som vist nedenfor:

area = [l*b for l,b in zip(l_arr,b_arr)]
print(area)

# Output
[8,5,7,27]

I den neste delen lærer du hvordan du bruker betingede utsagn i en listeforståelse.

Python-listeforståelse med tilstandssyntaks

La oss starte med å bygge videre på den forrige syntaksen for listeforståelse.

Her er syntaksen:

<new_list> = [<expression> for <item> in <iterable> if <condition>]

I stedet for å beregne for alle elementer, vil du bare gjøre det for de elementene som tilfredsstiller en spesifikk —hvor betingelse := True. Og dette fører til en forenklet syntaks som vist:

Python-listeforståelse med tilstandssyntaks (bilde av forfatter)

▶ Med det, la oss gå videre til kodeeksempler.

Python-listeforståelse med tilstandseksempler

#1. Du får strengen «Jeg lærer Python i 2022». Du vil ha en liste over alle sifrene i denne strengen. Så hvordan gjør du det?

I Python virker .isdigit() på et tegn og returnerer True hvis det er et siffer (0-9); ellers returnerer den False.

Kodebiten nedenfor viser hvordan du kan samle listen over alle sifrene i strengen str1.

str1 = "I'm learning Python3 in 2022"

digits = [char for char in str1 if char.isdigit()]

print(digits)

# Output
['3', '2', '0', '2', '2']

I koden ovenfor:

  • du går gjennom strengen str1,
  • få tilgang til hvert tegn for å sjekke om det er et siffer ved å bruke isdigit()-metoden, og
  • legg til char i de nye listesifrene bare hvis det er et siffer.

La oss ta et annet eksempel.

#2. Du har en liste over frukter.🍊 Og du vil lage en liste starter_with_b som inneholder alle fruktene fra fruktlisten som starter med b. Du kan bruke startswith()-metoden for å skrive betingelsen.

.startswith(«char») returnerer True hvis starter med «char»; ellers returnerer den False.

fruits = ['blueberry','apple','banana','orange','cherry']

starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')]

print(starts_with_b)

# Output
['blueberry', 'banana']

I utgangen ovenfor får vi «blåbær» og «banan» som er de to fruktene som starter med «b» i fruktlisten, som vi forventet.

Og det avslutter diskusjonen vår om listeforståelse.

Konklusjon

Jeg håper denne opplæringen hjalp deg med å forstå listeforståelser i Python.

La oss oppsummere:

  • Du kan bruke [<do this> for <all-items> in <this-list>] for å lage en ny liste ved å bruke listeforståelse.
  • I tillegg kan du bruke syntaksen [<do this> for <all-items> in <this-list> if <condition-is-True>] med den betingede erklæringen.

I tillegg har du også kodet flere eksempler. Som et neste trinn kan du prøve å omskrive noen av dine eksisterende Python-løkker for å lage liste ved å bruke listeforståelse. Lykke til med koding! Til neste veiledning.😄

Du kan nå se på hvordan du konverterer en liste til en ordbok eller lære hvordan du håndterer filer i Python.

  Slik får du et Google IT Support Professional-sertifikat