Generaattorit
Ymmärtäkää generaattorit ja niiden käyttö iteraattorien luomiseen
Generaattorit on ilmainen Python For Kids-oppitunti CoddyKitissä. Tämä on oppitunti 2/5. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python For Kids-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python For Kids-kurssilla on yhteensä 5 oppituntia.
Johdatus generaattoreihin
Generaattorit ovat Pythonissa erityinen iteraattorityyppi, jonka avulla tietoja voidaan iteroida laiskasti. Sen sijaan, että kaikki tiedot palautettaisiin kerralla, generaattori tuottaa yhden alkion kerrallaan, mikä tekee muistin käytöstä tehokasta.
Tässä oppitunnissa opitte, miten Pythonissa luodaan ja käytetään generaattoreita.

Mikä on generaattori?
Generaattori on funktio, joka käyttää yield-avainsanaa arvojen palauttamiseen yksi kerrallaan. Jokainen generaattorin next()-metodin kutsu jatkaa suorittamista siitä kohdasta, jossa arvo viimeksi palautettiin yield-avainsanalla.
# Basic generator example
def my_generator():
yield 1
yield 2
yield 3
# Using the generator
gen = my_generator()
print(next(gen)) # Outputs: 1
print(next(gen)) # Outputs: 2
print(next(gen)) # Outputs: 3Generaattorien toiminta
Generaattorit tallentavat funktion tilan, joten niiden suoritus voi jatkua täsmälleen siitä kohdasta, johon se jäi. Tämän ansiosta generaattorit käyttävät muistia tehokkaasti ja sopivat hyvin suurille tietojoukoille.
# Example: Generating a range of numbers
def range_generator(start, end):
while start < end:
yield start
start += 1
for number in range_generator(1, 5):
print(number) # Outputs: 1, 2, 3, 4Generaattorilausekkeet
Generaattorilausekkeet muistuttavat listan muodostuslausekkeita, mutta niissä käytetään hakasulkeiden sijaan sulkeita. Ne luovat listojen sijaan generaattoreita.
# Generator expression
gen_exp = (x * x for x in range(5))
for value in gen_exp:
print(value) # Outputs: 0, 1, 4, 9, 16Generaattorit ja listat
Generaattorit käyttävät muistia tehokkaammin kuin listat, koska ne eivät tallenna kaikkia tietoja muistiin. Sen sijaan ne tuottavat tiedot lennossa.
# Comparing lists and generators
# List comprehension
list_comp = [x * x for x in range(1000000)]
# Generator expression
gen_exp = (x * x for x in range(1000000))
# List comprehension uses more memory
print(type(list_comp)) # Outputs: <class 'list'>
print(type(gen_exp)) # Outputs: <class 'generator'>Generaattorien käyttötapaukset
Generaattorit sopivat erityisesti seuraaviin tarkoituksiin:
- Suurten tietojoukkojen käsittelyyn, kun ne eivät mahdu muistiin.
- Äärettömien lukujonojen tuottamiseen.
- Tietojen laiskaan arviointiin.
Äärettömät generaattorit
Generaattorit voivat tuottaa äärettömiä jonoja, kuten loputonta lukujonoa. Muistakaa pysäyttää silmukka, jotta suoritus ei jatku loputtomasti.
# Infinite generator example
def infinite_sequence():
num = 0
while True:
yield num
num += 1
# Using the infinite generator
for i in infinite_sequence():
if i > 5:
break
print(i) # Outputs: 0, 1, 2, 3, 4, 5Useita yield-lauseita sisältävät generaattorifunktiot
Generaattorifunktioissa voi olla useita yield-lauseita, joiden avulla voidaan luoda monimutkaisia jonoja:
# Multiple yields in a generator
def multi_yield():
yield "First"
yield "Second"
yield "Third"
for value in multi_yield():
print(value) # Outputs: First, Second, ThirdGeneraattorien yleiset virheet
Välttäkää seuraavia virheitä:
return-lauseen käyttäminenyield-lauseen sijaan generaattorifunktiossa.- Generaattorin käyttämättä jättäminen silmukalla tai
next()-kutsulla. - Generaattorien käyttäminen pienille tietojoukoille, joihin listat sopivat paremmin.
Mitä opimme?
Tässä oppitunnissa opit seuraavat asiat:
- Mitä generaattorit ovat ja miten ne toimivat Pythonissa.
- Miten
yield-avainsanaa käytetään generaattorifunktioiden luomiseen. - Generaattorien ja listojen väliset erot.
- Generaattorien käyttötapaukset, kuten äärettömät sekvenssit ja suuret tietoaineistot.
Hienoa työtä! Siirrytään seuraavaan aiheeseen.

Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 22
- Oppitunnit
- 94
Usein kysytyt kysymykset
Onko oppitunti ”Generaattorit” ilmainen?
Kyllä – oppitunnin ”Generaattorit” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python For Kids-kurssin, päivitä CoddyKit PROhon. Python For Kids-kurssilla on yhteensä 5 oppituntia.
Mitä opin oppitunnilla ”Generaattorit”?
Ymmärtäkää generaattorit ja niiden käyttö iteraattorien luomiseen Harjoittelet Python For Kids-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python For Kids-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python For Kids-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/5.
Kuinka kauan ”Generaattorit”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python For Kids-oppitunnilla?
Kyllä. Jokainen Python For Kids-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Dekoraattorit
- Generaattorit
- Kontekstinhallitsijat (with-lauseet)
- Comprehension-rakenteet (listat, joukot ja sanakirjat)
- Iteraattorit ja iteroitavat oliot