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 oli selkeä päätepiste. Generaattorit ovat kuitenkin erityisen tehokkaita, kun ne yhdistetään äärettömään silmukkaan – arvojen tuottaminen 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 hallita, 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 loputtomiin ja kaataa ohjelmasi.
Pyyhkäise aloittaaksesi koodauksen
Luo ainutlaatuisia 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-muuttujaa 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