Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kædning og Sammensætning af Iteratorer | Python-Iteratorer
Funktionelle Programmeringskoncepter i Python

Kædning og Sammensætning af Iteratorer

Stryg for at vise menuen

Kædning og sammensætning af iteratorer gør det muligt at opbygge kraftfulde datapipelines i Python. Ved at forbinde simple iterator- eller generatorfunktioner kan du behandle data trin for trin, hvor hvert trin transformerer eller filtrerer dataene, før de sendes videre til det næste. Denne tilgang er især nyttig, når du ønsker at anvende flere operationer i rækkefølge, såsom at filtrere elementer og derefter transformere dem, eller kombinere data fra flere kilder. Videoen ovenfor illustrerer, hvordan du kan bruge generator-pipelines til at holde din kode modulær og hukommelseseffektiv, så du undgår at oprette mellemliggende lister.

For at se dette i praksis kan du forestille dig et scenarie, hvor du har en sekvens af tal og ønsker at filtrere de lige tal fra og derefter kvadrere de resterende tal. Dette kan opnås ved at kæde to generatorfunktioner sammen: én til filtrering og én til transformation. Denne metode sikrer, at hvert element kun behandles efter behov, hvilket gør din kode både kortfattet 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]

Den første funktion, filter_odds, tager et iterabelt af tal og returnerer kun de ulige tal. Den anden funktion, square_numbers, tager et iterabelt og returnerer kvadratet af hvert tal. Ved at sende outputtet fra filter_odds direkte til square_numbers oprettes en pipeline: først filtrering, derefter transformation af dataene. Det endelige resultat samles i en liste og udskrives, hvilket viser kvadraterne af alle ulige tal fra 0 til 9.

Denne metode er hukommelseseffektiv, fordi hver værdi behandles én ad gangen i stedet for at oprette mellemliggende lister. Det gør også koden modulær, da hver generatorfunktion har ét formål og kan genbruges i forskellige pipelines.

question mark

Hvilket af følgende er en fordel ved at kæde iteratorer og generatorer i Python?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 5. Kapitel 6
some-alt