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 Iterators
Funktionelle Programmeringskoncepter i Python

bookKæ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 enkle iterator- eller generatorfunktioner kan data behandles 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 der skal anvendes 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 generatorpipelines kan bruges til at holde koden modulær og hukommelseseffektiv, så der undgås oprettelse af 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 koden 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]
copy

Den første funktion, filter_odds, tager et iterabelt af tal og returnerer kun de tal, der er ulige. 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 kun udfører én opgave 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