Kurssivinkki:
- Edellinen Sivu Python perintä
- Seuraava Sivu Python alue
Kurssivinkki:
Python-iteraattori
Iteraattori on objekti, joka sisältää arvojen laskettavan määrän.
Iteraattori on iteraattorit, mikä tarkoittaa, että voit käydä läpi kaikki arvot. __iter__()
ja __next__()
Teknisesti ottaen Pythonissa, iteraattori on objekti, joka toteuttaa iteraattoriprotokollan ja sisältää menetelmät
.
Iteraattori VS Iteraattorit (Iterable)
listat, tuple, sanakirjat ja joukot ovat iteraattoreita. Ne ovat iteraattoreita, joista voit hakea iteraattoreita (Iterator). Kaikki nämä objektit ovat varustettuja iteroinnin
iter()
Esimerkki
Menetelmä:
mytuple = ("apple", "banana", "cherry") Palauta iteraattori muuttujasta, ja tulosta jokainen arvo: print(next(myit)) print(next(myit)) print(next(myit))
myit = iter(mytuple)
Esimerkki
Merkkijonot ovat myös iteraattoreita, ja ne voivat palauttaa iteraattoreita:
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
Käy läpi iteraattoria
Voimme myös käyttää for-silmukkaa käydäksämme läpi iteraattoreita:
Esimerkki
Iteroi muuttujien arvoja:
mytuple = ("apple", "banana", "cherry") for x in mytuple: print(x)
Esimerkki
Iteroi merkkijonon merkkejä:
mystr = "banana" for x in mystr: print(x)
Vinkki:for-silmukka luo iteraattoriobjektin ja suorittaa jokaisen silmukan toistossa next()
menetelmällä.
luoda iteraattori
Jotta objekti/luokka voidaan luoda iteraattorina, on toteutettava __iter__()
ja __next__()
menetelmällä.
Kuten opit Python-luokka/objekti-luvusta, kaikki luokat ovat varustettuja nimellä __init__()
Funktiota, joka mahdollistaa joidenkin alustusten suorittamisen objektin luomisen yhteydessä.
__iter__()
Metodin toiminta on samanlainen, voit suorittaa toimintoja (aloitus jne.), mutta sinun on aina palautettava itse iterointiobjekti.
__next__()
Metodi sallii myös toimintojen suorittamisen, ja se on pakko palauttaa seuraava kohta sarjasta.
Esimerkki
Luo numeroita palauttava iterointi, joka alkaa 1:stä ja jokainen sarja lisää 1 (palauttaa 1, 2, 3, 4, 5 jne.):
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))
StopIteration
Jos sinulla on riittävästi next()
语句, tai käyttää sitä for-silmukassa, niin edellä oleva esimerkki jatkuu ikuisesti.
Välttääksemme loputtoman iteroinnin, voimme käyttää StopIteration
语句。
在 __next__()
Metodissa, jos iterointi suoritetaan määrätty määrä kertoja, voimme lisätä lopetus条件的错误:
Esimerkki
Pysäytä 20 iteroinnin jälkeen:
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): if self.a <= 20: x = self.a self.a += 1 return x else: raise StopIteration myclass = MyNumbers() myiter = iter(myclass) for x in myiter: print(x)
- Edellinen Sivu Python perintä
- Seuraava Sivu Python alue