Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kjeding og Sammensetting av Iteratorer | Python Iterators
Funksjonelle Programmeringskonsepter i Python

bookKjeding og Sammensetting av Iteratorer

Sveip for å vise menyen

Kjeding og sammensetting av iteratorer gjør det mulig å bygge kraftige datapipelines i Python. Ved å koble sammen enkle iterator- eller generatorfunksjoner kan du behandle data steg for steg, der hvert trinn transformerer eller filtrerer dataene før de sendes videre til neste. Denne tilnærmingen er spesielt nyttig når du ønsker å utføre flere operasjoner i rekkefølge, for eksempel å filtrere elementer og deretter transformere dem, eller kombinere data fra flere kilder. Videoen ovenfor illustrerer hvordan du kan bruke generator-pipelines for å holde koden modulær og minneeffektiv, uten behov for å opprette mellomliggende lister.

For å se dette i praksis, vurder et scenario der du har en sekvens med tall og ønsker å filtrere ut de partallene, og deretter kvadrere de gjenværende tallene. Dette kan du oppnå ved å kjede to generatorfunksjoner: én for filtrering og én for transformasjon. Denne tilnærmingen sikrer at hvert element kun behandles ved behov, noe som gjør koden både konsis og effektiv.

12345678910111213141516171819
def filter_odds(numbers): for n in numbers: if n % 2 != 0: yield n def square_numbers(numbers): for n in numbers: yield n ** 2 # Original data data = range(10) # Chain the generators: first filter, then transform filtered = filter_odds(data) squared = square_numbers(filtered) # Collect results result = list(squared) print(result) # Output: [1, 9, 25, 49, 81]
copy

Den første funksjonen, filter_odds, tar et itererbart med tall og gir kun de som er oddetall. Den andre funksjonen, square_numbers, tar et itererbart og gir kvadratet av hvert tall. Ved å sende utdataene fra filter_odds direkte til square_numbers, lager du en pipeline: først filtrering, deretter transformasjon av dataene. Det endelige resultatet samles i en liste og skrives ut, og viser kvadratene av alle oddetall fra 0 til 9.

Denne metoden er minneeffektiv fordi hver verdi behandles én om gangen, i stedet for å lage mellomliggende lister. Den holder også koden modulær, siden hver generatorfunksjon gjør én ting og kan gjenbrukes i ulike pipelines.

question mark

Hvilket av følgende er en fordel med å kjede sammen iteratorer og generatorer i Python?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 5. Kapittel 6
some-alt