Oppikaa tekoälyä Pythonilla · Oppitunti

Generaattorit

Ymmärtäkää generaattorit ja niiden käyttö iteraattorien luomiseen

Oppitunti 2/511 vaihetta

Generaattorit on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 2/5. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 5 oppituntia.

Johdanto generaattoreihin

Generaattorit ovat Pythonissa erityinen iteraattorityyppi, jonka avulla tietoja voidaan käydä läpi laiskasti. Sen sijaan, että kaikki tiedot palautettaisiin kerralla, generaattorit tuottavat yhden alkion kerrallaan, joten ne käyttävät muistia tehokkaasti.

Tässä oppitunnissa opit 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 siitä kohdasta, jossa generaattori viimeksi tuotti arvon.

# 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 ne voivat jatkaa suoritusta täsmälleen siitä, mihin se jäi. Tämän ansiosta ne käyttävät muistia tehokkaasti ja sopivat erinomaisesti 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, 4

Generaattorilausekkeet

Generaattorilausekkeet muistuttavat listakoosteita, mutta niissä käytetään sulkeita hakasulkeiden sijaan. 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 verrattuna listoihin

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:

  • Sellaisten suurten tietojoukkojen käsittelyyn, jotka eivät mahdu muistiin.
  • Äärettömien jonojen tuottamiseen.
  • Tietojen laiskaan arviointiin.

Äärettömät generaattorit

Generaattorit voivat tuottaa äärettömiä jonoja, kuten loputonta lukujonoa. Muista 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

Generaattorifunktioissa voi olla useita yield-lauseita, joiden avulla voit 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

Yleisiä virheitä generaattorien kanssa

Tässä on muutamia virheitä, joita kannattaa välttää:

  • return-lauseen käyttäminen yield-lauseen sijaan generaattorifunktiossa.
  • Generaattorin kuluttamisen unohtaminen silmukan tai next()-funktion avulla.
  • Generaattorien käyttäminen pienissä tietojoukoissa, joissa listat sopivat paremmin.

Mitä opimme?

Tässä oppitunnissa opitte:

  • Mitä generaattorit ovat ja miten ne toimivat Pythonissa.
  • Kuinka yield-lauseella luodaan generaattorifunktioita.
  • Generaattorien ja listojen väliset erot.
  • Generaattorien käyttötapauksia, kuten äärettömiä jonoja ja suuria tietoaineistoja.

Hienoa työtä! 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
53
Oppitunnit
225

Usein kysytyt kysymykset

Onko oppitunti ”Generaattorit” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Generaattorit”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 5 oppituntia.

Mitä opin oppitunnilla ”Generaattorit”?

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

Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-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ä Oppikaa tekoälyä Pythonilla-oppitunnilla?

Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-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. Kontekstinhallitsijat (with-lauseet)
  4. Comprehension-rakenteet (listat, joukot ja sanakirjat)
  5. Iteraattorit ja iteroitavat oliot
← Takaisin: Oppikaa tekoälyä Pythonilla