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 iteroida arvojen hakemiseksi yksi kerrallaan.
Generaattorifunktioiden tärkein etu on niiden muistitehokkuus. Generaattorifunktiot tuottavat arvot tarpeen mukaan sitä mukaa kun niitä tarvitaan, eivätkä luo koko arvojoukkoa etukäteen. Tämä tekee niistä muistitehokkaita, erityisesti suurten tietomassojen tai äärettömien jonomuotoisten arvojen 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 kirjautumistunnuslistan ja palauttaa jokaisen tunnuksen yield-kohdassa ja pysähtyy siihen. Kun next() kutsutaan, generaattori jatkaa siitä, mihin jäi, tuottaen arvot tehokkaasti ilman, että koko listaa tarvitsee tallentaa muistiin samanaikaisesti. Tämä tekee generaattoreista erityisen hyödyllisiä suurten tietomassojen 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 generointiin.
  3. Käytä yield-komentoa palauttaaksesi nykyisen tunnisteen muodossa f"ID_{count}".
  4. Kasvata count-muuttujaa 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

Suggested prompts:

Can you explain how the generator resumes execution after each yield?

What happens if I call next() more times than there are items in the list?

Can you show a real-world scenario where using a generator is better than a regular function?

close

Awesome!

Completion rate improved to 4.17

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 iteroida arvojen hakemiseksi yksi kerrallaan.
Generaattorifunktioiden tärkein etu on niiden muistitehokkuus. Generaattorifunktiot tuottavat arvot tarpeen mukaan sitä mukaa kun niitä tarvitaan, eivätkä luo koko arvojoukkoa etukäteen. Tämä tekee niistä muistitehokkaita, erityisesti suurten tietomassojen tai äärettömien jonomuotoisten arvojen 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 kirjautumistunnuslistan ja palauttaa jokaisen tunnuksen yield-kohdassa ja pysähtyy siihen. Kun next() kutsutaan, generaattori jatkaa siitä, mihin jäi, tuottaen arvot tehokkaasti ilman, että koko listaa tarvitsee tallentaa muistiin samanaikaisesti. Tämä tekee generaattoreista erityisen hyödyllisiä suurten tietomassojen 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 generointiin.
  3. Käytä yield-komentoa palauttaaksesi nykyisen tunnisteen muodossa f"ID_{count}".
  4. Kasvata count-muuttujaa 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