single
Äärettömät Generaattorit
Pyyhkäise näyttääksesi valikon
Muista, että yield keskeyttää generaattorin ja jatkaa sitä seuraavalla next()-kutsulla. Tähän asti näkemilläsi generaattoreilla on ollut selkeä päätepiste. Generaattorit ovat kuitenkin erityisen tehokkaita, kun ne yhdistetään äärettömään silmukkaan – tuottaen arvoja loputtomasti ilman, että niitä tallennetaan muistiin.
Äärettömät generaattorit while True -rakenteella
Käyttämällä while True -silmukkaa generaattorin sisällä luodaan ääretön jono – jotain, mitä olisi mahdotonta tallentaa listana. Generaattori tuottaa seuraavan arvon vain, kun next() kutsutaan:
1234567891011def counter(): count = 1 while True: # Runs forever yield count # Return current value and pause count += 1 # Resume from here on the next call gen = counter() print(next(gen)) # 1 print(next(gen)) # 2 print(next(gen)) # 3
Riippumatta siitä, kuinka monta kertaa kutsut next(), generaattorilla on aina uusi arvo valmiina – se ei koskaan mene edelle eikä tallenna arvoja muistiin.
Äärettömän generaattorin hallinta
Koska generaattori toimii loputtomasti, sinun täytyy itse määrittää, kuinka monta arvoa haet. Yleisin tapa on käyttää for-silmukkaa yhdessä range()-funktion kanssa:
12345678910def counter(): count = 1 while True: yield count count += 1 gen = counter() for _ in range(5): print(next(gen)) # 1, 2, 3, 4, 5
Älä koskaan iteroi ääretöntä generaattoria tavallisella for-silmukalla ilman pysäytysehtoa – se jatkuu ikuisesti ja kaataa ohjelmasi.
Pyyhkäise aloittaaksesi koodauksen
Luo yksilöllisiä käyttäjä-ID:tä käyttämällä ääretöntä generaattorifunktiota. id_generator()-funktion tulee jatkuvasti tuottaa tunnisteita kuten 'ID_1', 'ID_2' jne.
- Alusta muuttuja
countarvolla 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_genkutsumallaid_generator().
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme