I Python er listeforståelser et kraftig verktøy for å generere nye lister basert på eksisterende samlinger, som lister, strenger og tupler.
Deres konsise syntaks muliggjør opprettelse av nye lister med en enkelt kodelinje, noe denne veiledningen vil demonstrere.
I løpet av de kommende minuttene vil du lære:
- Hvordan man etablerer nye lister ved hjelp av for-løkker,
- Den spesifikke syntaksen for listeforståelse i Python, og
- Hvordan man modifiserer listeforståelser med if-betingelser.
I tillegg vil du kode flere eksempler for å styrke din forståelse av listeforståelse.
La oss begynne.🌊
Opprettelse av lister i Python med for-løkker
Tenk deg at du har en liste med tall. Du ønsker å lage en ny liste med kuben av hvert tall. Slik kan det gjøres med 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 den ovenstående koden utfører vi følgende steg:
- Initialiserer en tom liste som heter num_cubes.
- Itererer gjennom talllisten.
- Henter hvert tall num, og beregner kuben ved hjelp av eksponentieringsoperatoren: num**3.
- Til slutt legger vi den kubiske verdien til listen num_cubes.
Merk: I Python benyttes eksponentieringsoperatoren ** med syntaksen: num**pow—tallet num opphøyes til potensen pow.
Dette kan imidlertid oppnås mer elegant ved hjelp av listeforståelse i Python. La oss gå videre og lære om syntaksen.
Syntaks for Python-listeforståelse
Den generelle syntaksen for listeforståelse vises nedenfor.
<ny_liste> = [<uttrykk> for <element> in <samling>]
La oss analysere denne syntaksen:
- Lister i Python er omgitt av klammeparenteser []. Derfor må hele listeforståelsesdeklarasjonen være innelukket med [].
i indikerer at vi itererer gjennom en samling. Enhver Python-objekt som kan itereres for å få tilgang til individuelle elementer – som lister, tupler og strenger – er en samling. er operasjonen eller verdien som skal beregnes for hvert i .
Enkelt, ikke sant?
I bunn og grunn utfører vi en handling for hvert element i listen (eller en itererbar) for å skape en ny liste.
Ved å bruke denne fremgangsmåten kan syntaksen forenkles, som vist i illustrasjonen nedenfor.
Python-listeforståelsessyntaks (bilde av forfatter)
Nå som vi har forstått syntaksen, la oss begynne å kode. Du kan bruke en online Python IDE for å utføre disse eksemplene, eller du kan kjøre dem lokalt på din datamaskin.
Eksempler på listeforståelse i Python
I det forrige avsnittet genererte vi en ny liste num_cubes fra nums. La oss nå skrive om dette ved hjelp av listeforståelse.
Listeforståelse med tall
La oss bruke den forenklede syntaksen som følger:
: Her må hvert tall opphøyes i tredje potens. Erstatt derfor med num**3. : Løkkevariabelen er num – de individuelle tallene i listen. : Den eksisterende listen er nums. - Og [num**3 for num in nums] er det fullstendige uttrykket. ✅
Setter vi alt sammen, får vi følgende kode:
num_cubes = [num**3 for num in nums] print(num_cubes) # Output [8, 27, 125, 343]
Gratulerer, du har nå kodet din første listeforståelse.🎉
La oss gå videre og se på Python-strenger.
Listeforståelse med strenger
Anta at du har en liste med forfattere – du kan selvfølgelig bruke dine favorittforfattere.😄
authors = ["jane austen","george orwell","james clear","cal newport"]
Legg merke til at navnene på forfatterne er i små bokstaver i listen ovenfor. Vi ønsker nå å formatere dem som titler og lagre dem i en ny liste kalt forfatter_liste.
Merk: I Python aksepterer strengmetoden title() en streng som argument og returnerer en kopi av strengen formatert som en tittel. Det vil si at den første bokstaven i hvert ord er stor: Fornavn Etternavn.
Alt du trenger å gjøre er:
- Iterere gjennom forfatterlisten, og for hver forfatter i listen,
- kalle author.title() for å få en kopi av den tittelformaterte strengen.
Python-koden for dette vises 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']
Som du ser i resultatet, er alle forfatternavnene nå formatert med stor bokstav i begynnelsen av hvert ord – akkurat slik vi ønsket.
Listeforståelse med flere lister
Til nå har du lært hvordan du bruker listeforståelse til å lage nye lister fra en eksisterende liste. Nå skal vi se hvordan du kan opprette en ny liste fra flere lister.
Tenk deg at du har to lister, l_arr og b_arr, som inneholder henholdsvis lengdene og breddene til fire rektangler.
Du skal lage en ny liste som inneholder arealet til disse fire rektanglene. Husk at areal = lengde * bredde.
l_arr = [4,5,1,3] b_arr = [2,1,7,9]
For å beregne arealet, trenger du elementer fra begge listene (l_arr og b_arr). Dette kan gjøres ved hjelp av Pythons zip()-funksjon.
Merk: I Python tar zip()-funksjonen inn en eller flere samlinger som argumenter med syntaksen zip(*samlinger). Den returnerer en iterator av tupler, der tuppelen i inneholder elementet i fra hver av samlingene.
Bildet nedenfor illustrerer dette. Du har fire verdier i både l_arr og b_arr, så indeksintervallet er fra 0 til 3. Som du kan se, inneholder tuppel 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 iterere 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 neste avsnitt vil du lære hvordan du bruker betingede uttrykk i listeforståelse.
Python listeforståelse med betingelser
La oss bygge videre på den forrige syntaksen for listeforståelse.
Her er syntaksen:
<ny_liste> = [<uttrykk> for <element> in <samling> if <betingelse>]
I stedet for å beregne
Python-listeforståelse med betingelsessyntaks (bilde av forfatter)
▶ Med det sagt, la oss gå videre til noen kodeeksempler.
Eksempler på listeforståelse med betingelser i Python
#1. Du har strengen «Jeg lærer Python i 2022». Du ønsker en liste over alle sifrene i denne strengen. Hvordan gjør du det?
I Python vil
Kodebiten nedenfor viser hvordan du samler listen med alle sifrene i strengen str1.
str1 = "Jeg lærer Python3 i 2022" digits = [char for char in str1 if char.isdigit()] print(digits) # Output ['3', '2', '0', '2', '2']
I koden ovenfor:
- itererer du gjennom strengen str1,
- sjekker du hvert tegn for å se om det er et siffer ved hjelp av isdigit()-metoden, og
- legger du til char i de nye listesifrene kun hvis det er et siffer.
La oss ta et annet eksempel.
#2. Du har en liste med frukt.🍊 Du vil lage en liste starter_med_b som inneholder alle fruktene fra fruktlisten som starter med bokstaven «b». Du kan bruke startswith()-metoden for å skrive betingelsen.
fruits = ['blåbær','eple','banan','appelsin','kirsebær'] starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')] print(starts_with_b) # Output ['blåbær', 'banan']
I resultatet ovenfor får vi «blåbær» og «banan», som er de to fruktene som starter med «b» i fruktlisten, akkurat som forventet.
Og det avslutter diskusjonen vår om listeforståelse.
Konklusjon
Jeg håper denne veiledningen har hjulpet deg med å forstå listeforståelse i Python.
La oss oppsummere:
- Du kan bruke [<gjør dette> for <alle-elementer> in <denne-listen>] for å lage en ny liste ved hjelp av listeforståelse.
- I tillegg kan du bruke syntaksen [<gjør dette> for <alle-elementer> in <denne-listen> if <betingelse-er-sann>] med den betingede erklæringen.
Du har også kodet flere eksempler. Som et neste steg kan du prøve å skrive om noen av dine eksisterende Python-løkker for å opprette lister ved å bruke listeforståelse. Lykke til med kodingen! Vi snakkes i neste veiledning.😄
Du kan nå utforske hvordan du konverterer en liste til en ordbok eller lære å håndtere filer i Python.