Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Iteraattoreiden Ketjuttaminen ja Yhdistäminen | Python Iterators
Funktionaalisen Ohjelmoinnin Käsitteet Pythonissa

bookIteraattoreiden Ketjuttaminen ja Yhdistäminen

Pyyhkäise näyttääksesi valikon

Iteraattoreiden ketjuttaminen ja yhdistäminen mahdollistaa tehokkaiden tietoputkien rakentamisen Pythonissa. Yhdistämällä yksinkertaisia iteraattori- tai generaattorifunktioita voit käsitellä dataa vaiheittain, jokaisen vaiheen muokatessa tai suodattaessa tietoa ennen sen siirtämistä seuraavalle. Tämä lähestymistapa on erityisen hyödyllinen, kun haluat suorittaa useita operaatioita peräkkäin, kuten suodattaa alkioita ja sen jälkeen muuntaa niitä, tai yhdistää tietoa useista lähteistä. Yllä oleva video havainnollistaa, kuinka generaattoriputkia voidaan käyttää koodin modulaarisuuden ja muistitehokkuuden säilyttämiseksi ilman tarvetta luoda välilistoja.

Tämän näkemiseksi käytännössä, kuvittele tilanne, jossa sinulla on numerosarja ja haluat suodattaa parilliset luvut pois sekä korottaa jäljelle jäävät luvut toiseen potenssiin. Tämän voi toteuttaa ketjuttamalla kaksi generaattorifunktiota: yksi suodatukseen ja toinen muunnokseen. Näin varmistetaan, että jokainen alkio käsitellään vain tarpeen mukaan, mikä tekee koodista sekä tiivistä että tehokasta.

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

Ensimmäinen funktio, filter_odds, ottaa vastaan iteroitavan numerosarjan ja tuottaa vain parittomat luvut. Toinen funktio, square_numbers, ottaa vastaan iteroitavan ja tuottaa jokaisen luvun neliön. Kun filter_odds-funktion tulos annetaan suoraan square_numbers-funktiolle, muodostuu tietoputki: ensin suodatus, sitten muunnos. Lopullinen tulos kerätään listaksi ja tulostetaan, jolloin nähdään kaikki luvut 0–9, jotka ovat parittomia ja korotettu toiseen potenssiin.

Tämä menetelmä on muistitehokas, koska jokainen arvo käsitellään yksi kerrallaan ilman välilistoja. Lisäksi koodi pysyy modulaarisena, sillä jokainen generaattorifunktio tekee vain yhden asian ja niitä voidaan käyttää uudelleen eri tietoputkissa.

question mark

Mikä seuraavista on Pythonin iteraattoreiden ja generaattoreiden ketjuttamisen hyöty?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 5. Luku 6
some-alt