Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Kedjning och Sammansättning av Iteratorer | Python Iterators
Funktionella Programmeringskoncept i Python

bookKedjning och Sammansättning av Iteratorer

Svep för att visa menyn

Att kedja och komponera iteratorer gör det möjligt att bygga kraftfulla datapipelines i Python. Genom att länka samman enkla iterator- eller generatorfunktioner kan du bearbeta data steg för steg, där varje steg transformerar eller filtrerar datan innan den skickas vidare till nästa. Detta tillvägagångssätt är särskilt användbart när du vill tillämpa flera operationer i följd, till exempel filtrera objekt och sedan transformera dem, eller kombinera data från flera källor. Videon ovan visar hur du kan använda generatorpipelines för att hålla din kod modulär och minnes­effektiv, utan att behöva skapa mellanliggande listor.

För att se detta i praktiken, tänk dig ett scenario där du har en sekvens av tal och vill filtrera bort de jämna talen, och sedan kvadrera de återstående. Du kan uppnå detta genom att kedja två generatorfunktioner: en för filtrering och en för transformering. Detta tillvägagångssätt säkerställer att varje objekt bearbetas endast vid behov, vilket gör din kod både koncis och 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örsta funktionen, filter_odds, tar en iterable med tal och returnerar endast de som är udda. Den andra funktionen, square_numbers, tar en iterable och returnerar kvadraten av varje tal. Genom att skicka utdata från filter_odds direkt till square_numbers skapar du en pipeline: först filtrering, sedan transformering av datan. Slutresultatet samlas i en lista och skrivs ut, vilket visar kvadraterna av alla udda tal från 0 till 9.

Denna metod är minnes­effektiv eftersom varje värde bearbetas ett i taget, istället för att skapa mellanliggande listor. Det gör också koden modulär, eftersom varje generatorfunktion gör en sak och kan återanvändas i olika pipelines.

question mark

Vilken av följande är en fördel med att kedja iteratorer och generatorer i Python?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 5. Kapitel 6
some-alt