Kjeding 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.
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 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.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår