Kurssivinkki:

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))

Suorita Esimerkki

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))

Suorita Esimerkki

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)

Suorita Esimerkki

Esimerkki

Iteroi merkkijonon merkkejä:

mystr = "banana"
for x in mystr:
  print(x)

Suorita Esimerkki

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))

Suorita Esimerkki

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)

Suorita Esimerkki