Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Generaattorifunktiot | Funktion Palautusarvon Määrittely
Python-Funktioiden Opas

bookGeneraattorifunktiot

Generaattorifunktio on erityinen funktiotyyppi, joka käyttää yield-avainsanaa return-avainsanan sijaan arvojoukon tuottamiseen. Kun generaattorifunktiota kutsutaan, se palauttaa iteraattori-olion, jota voidaan käydä läpi arvojen hakemiseksi yksi kerrallaan.
Generaattorifunktioiden tärkein etu on niiden muistitehokkuus. Generaattorifunktiot tuottavat arvot tarpeen mukaan sitä mukaa kun niitä tarvitaan, eivätkä muodosta koko arvojoukkoa etukäteen. Tämä tekee niistä muistitehokkaita, erityisesti suurten tietomäärien tai äärettömien jonoiden käsittelyssä.

Tarkastellaan yksinkertaista generaattoriesimerkkiä. Tämä funktio tuottaa kirjautumistunnukset yksi kerrallaan annetusta listasta:

12345678910111213141516
def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
copy

Generaattorin periaate on, että se mahdollistaa arvojen palauttamisen yksi kerrallaan yield-avainsanalla ilman, että kaikkia arvoja tallennetaan muistiin samanaikaisesti. Esimerkissämme unique_logins_from_list-generaattori käy läpi kirjautumistunnusten listan ja palauttaa jokaisen tunnuksen yield-kohdassa ja pysähtyy siihen. Kun next() kutsutaan, generaattori jatkaa siitä, mihin jäi, ja tuottaa arvot tehokkaasti ilman, että koko listaa tarvitsee tallentaa muistiin samanaikaisesti. Tämä tekee generaattoreista erityisen hyödyllisiä suurten tietomäärien tai tietovirtojen käsittelyssä.

Tehtävä

Swipe to start coding

Luo yksilöllisiä käyttäjä-ID:tä käyttämällä generaattorifunktiota. id_generator()-funktion tulee jatkuvasti tuottaa tunnisteita kuten "ID_1", "ID_2" jne.

  1. Alusta muuttuja count arvolla 1, koska tunnisteet alkavat ykkösestä.
  2. Käytä ääretöntä while-silmukkaa tunnisteiden jatkuvaan luomiseen.
  3. Käytä yield-komentoa palauttaaksesi nykyisen tunnisteen muodossa f"ID_{count}".
  4. Kasvata count-arvoa yhdellä jokaisen iteraation jälkeen.
  5. Alusta generaattoriobjekti id_gen kutsumalla id_generator().

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

close

Awesome!

Completion rate improved to 4.35

bookGeneraattorifunktiot

Pyyhkäise näyttääksesi valikon

Generaattorifunktio on erityinen funktiotyyppi, joka käyttää yield-avainsanaa return-avainsanan sijaan arvojoukon tuottamiseen. Kun generaattorifunktiota kutsutaan, se palauttaa iteraattori-olion, jota voidaan käydä läpi arvojen hakemiseksi yksi kerrallaan.
Generaattorifunktioiden tärkein etu on niiden muistitehokkuus. Generaattorifunktiot tuottavat arvot tarpeen mukaan sitä mukaa kun niitä tarvitaan, eivätkä muodosta koko arvojoukkoa etukäteen. Tämä tekee niistä muistitehokkaita, erityisesti suurten tietomäärien tai äärettömien jonoiden käsittelyssä.

Tarkastellaan yksinkertaista generaattoriesimerkkiä. Tämä funktio tuottaa kirjautumistunnukset yksi kerrallaan annetusta listasta:

12345678910111213141516
def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
copy

Generaattorin periaate on, että se mahdollistaa arvojen palauttamisen yksi kerrallaan yield-avainsanalla ilman, että kaikkia arvoja tallennetaan muistiin samanaikaisesti. Esimerkissämme unique_logins_from_list-generaattori käy läpi kirjautumistunnusten listan ja palauttaa jokaisen tunnuksen yield-kohdassa ja pysähtyy siihen. Kun next() kutsutaan, generaattori jatkaa siitä, mihin jäi, ja tuottaa arvot tehokkaasti ilman, että koko listaa tarvitsee tallentaa muistiin samanaikaisesti. Tämä tekee generaattoreista erityisen hyödyllisiä suurten tietomäärien tai tietovirtojen käsittelyssä.

Tehtävä

Swipe to start coding

Luo yksilöllisiä käyttäjä-ID:tä käyttämällä generaattorifunktiota. id_generator()-funktion tulee jatkuvasti tuottaa tunnisteita kuten "ID_1", "ID_2" jne.

  1. Alusta muuttuja count arvolla 1, koska tunnisteet alkavat ykkösestä.
  2. Käytä ääretöntä while-silmukkaa tunnisteiden jatkuvaan luomiseen.
  3. Käytä yield-komentoa palauttaaksesi nykyisen tunnisteen muodossa f"ID_{count}".
  4. Kasvata count-arvoa yhdellä jokaisen iteraation jälkeen.
  5. Alusta generaattoriobjekti id_gen kutsumalla id_generator().

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4
single

single

some-alt