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 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.
12345678910111213141516171819def 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 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.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat