Heim >Backend-Entwicklung >Python-Tutorial >Definition des Python-Iterators und einfache Nutzungsanalyse

Definition des Python-Iterators und einfache Nutzungsanalyse

不言
不言Original
2018-05-02 15:41:381576Durchsuche

Dieser Artikel stellt hauptsächlich die Definition und einfache Verwendung von Python-Iteratoren vor und analysiert das Konzept, das Prinzip, die Erstellung und die Verwendung von Iteratoren in Form von Beispielen. Freunde in Not können sich darauf beziehen.

Die Beispiele in In diesem Artikel werden die Definition und einfache Verwendung des Python-Iterators beschrieben. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

1. Was ist ein Iterator?

Iteration bedeutet, wie der Name schon sagt, etwas zu wiederholen mal (machen Sie es jetzt einfach in einer Schleife) ). Ein Iterator ist ein Objekt, das die Methode __next__() implementiert (diese Methode erfordert beim Aufruf keine Parameter). Dies ist eine Möglichkeit, auf eine iterierbare Sequenz zuzugreifen, bis sie endet Auf alle Elemente wurde zugegriffen. [Hinweis]: Iteratoren können sich nur vorwärts, aber nicht rückwärts bewegen

[Vorteile von Iteratoren]:

Keine Anforderungen für die Verwendung von Iteratoren Bereiten Sie alle Elemente der gesamten Iteration im Voraus vor. Der Iterator berechnet ein Element nur, wenn er zu ihm iteriert, und das Element darf vorher oder nachher nicht existieren oder zerstört werden. Daher eignen sich Iteratoren zum Durchlaufen einiger großer oder sogar unendlicher Sequenzen.

2. Erstellen Sie einen Iterator

A. Verwenden Sie die integrierte Factory-Funktion iter(iterable), um eine iterierbare Sequenz in einen Iterator umzuwandeln

a=[1,2,3,4]
b=(1,2,3)
str='Tomwenxing'
print(iter(a))
print(iter(b))
print(iter(str))

Laufergebnis:

9432c699f87ac885aaf2b134e40ea11b
adf78890ab9090e9faf89414e3294e7c
c72ba777528fd9cd5af01ed720bea05f

B. Benutzerdefinierter Iterator

•Das Wesentliche an Iteratoren in Python ist, dass jedes Mal, wenn die __next__()-Methode aufgerufen wird, das nächste Element zurückgegeben wird oder StopIteration wird geworfen. Containerobjekt

• Da es in Python keine „Iterator“-Klasse gibt, können Klassen mit den folgenden zwei Eigenschaften als „Iterator“-Klassen bezeichnet werden:

 1. Es gibt __next__() Methode, gibt das nächste Element des Containers zurück oder löst eine StopIteration-Ausnahme aus

2. Es gibt eine __iter__()-Methode, die den Iterator selbst zurückgibt

#斐波那契数列
class Fabs():
  def __init__(self,max):
    self.max=max
    self.n,self.a,self.b=0,0,1
  def __iter__(self):#定义__iter__方法
    return self
  def __next__(self):#定义__next__方法
    if self.n<self.max:
      tmp=self.b
      self.a,self.b=self.b,self.a+self.b
      #等价于:
      #t=(self.a,self.a+self.b)
      #self.a=t[0]
      #self.b=t[1]
      self.n+=1
      return tmp
    raise StopIteration
print(Fabs(5))
for item in Fabs(10):
  print(item,end=&#39; &#39;)

Laufergebnis:

1631b04becad63b9fe614c592f81ca4a
1 1 2 3 5 8 13 21 34 55

3. Iteratormethoden

1.iter.__next__(): Gibt das nächste Element des Iterators zurück, löst jedoch eine StopIteration-Ausnahme aus, wenn es kein nächstes Element gibt

list=[1,2,3,4]
list=iter(list)
print(list.__next__())
print(list.__next__())
print(list.__next__())
print(list.__next__())
print(list.__next__())

Laufendes Ergebnis:

Traceback (letzter Aufruf zuletzt):
Datei „E:py3DemoHelloiterDemo.py“, Zeile 7, in 4225fa317875f3e92281a7b1a5733569
print(list.__next__())
StopIteration
1
2
3
4

2.iter.__iter__(): Gibt das Iteratorobjekt selbst zurück

list=[1,2,3,4]
list=iter(list)
print(list.__iter__())

Laufergebnis:

8adaee9a961265f5e3cc0e9e94f71bb1

Verwandte Empfehlungen:

Verwendung des Python-Iterators Beispiele für next() in

Das obige ist der detaillierte Inhalt vonDefinition des Python-Iterators und einfache Nutzungsanalyse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn