Python Academy · Oppitunti

Generaattorit

Ymmärtäkää generaattoreita ja niiden käyttöä iteraattorien luomiseen.

Oppitunti 2/511 vaihetta

Generaattorit on ilmainen Python Academy-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 Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 5 oppituntia.

Johdatus generaattoreihin

Generaattorit ovat Pythonissa erityinen iteraattorien tyyppi, jonka avulla voitte käydä tietoja läpi laiskasti. Sen sijaan että kaikki tiedot palautettaisiin kerralla, generaattori tuottaa yhden alkion kerrallaan, joten se käyttää muistia tehokkaasti.

Tässä oppitunnissa opitte luomaan ja käyttämään generaattoreita Pythonissa.

Generaattorit — kuvitus 1

Mikä on generaattori?

Generaattori on funktio, joka käyttää yield-avainsanaa arvojen palauttamiseen yksi kerrallaan. Jokainen generaattorin next()-metodin kutsu jatkaa suoritusta kohdasta, jossa generaattori viimeksi tuotti arvon yield-lauseella.

# 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: 3

Miten generaattorit toimivat

Generaattorit tallentavat funktion tilan, joten niiden suoritus voi jatkua täsmälleen siitä, mihin se jäi. Tämän ansiosta ne käyttävät muistia tehokkaasti ja sopivat erinomaisesti suurille aineistoille.

# 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, 4

Generaattorilausekkeet

Generaattorilausekkeet muistuttavat listakoostelmia, 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, 16

Generaattorit ja listat

Generaattorit käyttävät muistia tehokkaammin kuin listat, koska ne eivät tallenna kaikkia tietoja muistiin. Sen sijaan ne tuottavat tietoja tarpeen mukaan.

# 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 erinomaisesti seuraaviin tarkoituksiin:

  • Sellaisten suurten aineistojen käsittely, jotka eivät mahdu muistiin.
  • Äärettömien lukujonojen tuottaminen.
  • Tietojen laiska arviointi.

Ää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, 5

Useita yield-lauseita sisältävät generaattorifunktiot

Generaattorifunktiot voivat sisältää useita yield-lauseita, joiden avulla voitte 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, Third

Generaattorien yleiset virheet

Välttäkää seuraavia virheitä:

  • return-lauseen käyttäminen yield-lauseen sijaan generaattorifunktiossa.
  • Generaattorin kulutuksen unohtaminen silmukalla tai next()-kutsulla.
  • Generaattorien käyttäminen pienissä aineistoissa, joissa listat ovat tarkoituksenmukaisempia.

Mitä opitte?

Tässä oppitunnissa opitte:

  • Mitä generaattorit ovat ja miten ne toimivat Pythonissa.
  • Miten yield-lauseella luodaan generaattorifunktioita.
  • Miten generaattorit ja listat eroavat toisistaan.
  • Generaattorien käyttötapauksia, kuten äärettömät jonot ja suuret aineistot.

Hienosti tehty! Siirrytään seuraavaan aiheeseen.

Generaattorit — kuvitus 11
Aloita maksutta

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
76
Oppitunnit
320

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 Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 5 oppituntia.

Mitä opin oppitunnilla ”Generaattorit”?

Ymmärtäkää generaattoreita ja niiden käyttöä iteraattorien luomiseen. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-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 Academy-oppitunnilla?

Kyllä. Jokainen Python Academy-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

  1. Dekoraattorit
  2. Generaattorit
  3. Kontekstinhallintaohjelmat (with-lausekkeet)
  4. Koostelmat (listat, joukot ja sanakirjat)
  5. Iteraattorit ja iteroitavat oliot
← Takaisin: Python Academy