Generaattorifunktiot
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:
12345678910111213141516def 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))
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ä.
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.
- Alusta muuttuja
count
arvolla 1, koska tunnisteet alkavat ykkösestä. - Käytä ääretöntä
while
-silmukkaa tunnisteiden jatkuvaan luomiseen. - Käytä
yield
-komentoa palauttaaksesi nykyisen tunnisteen muodossaf"ID_{count}"
. - Kasvata
count
-arvoa yhdellä jokaisen iteraation jälkeen. - Alusta generaattoriobjekti
id_gen
kutsumallaid_generator()
.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 4.35
Generaattorifunktiot
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:
12345678910111213141516def 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))
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ä.
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.
- Alusta muuttuja
count
arvolla 1, koska tunnisteet alkavat ykkösestä. - Käytä ääretöntä
while
-silmukkaa tunnisteiden jatkuvaan luomiseen. - Käytä
yield
-komentoa palauttaaksesi nykyisen tunnisteen muodossaf"ID_{count}"
. - Kasvata
count
-arvoa yhdellä jokaisen iteraation jälkeen. - Alusta generaattoriobjekti
id_gen
kutsumallaid_generator()
.
Ratkaisu
Kiitos palautteestasi!
single