Python-Iterator

Wie man einen Python-Iterator erstellt: Eine Anleitung

Iteratoren gibt es uberall in Python; Es ist schwierig, selbst die Grundlagen zu erlernen, ohne das Wort ‚ÄûIterator‚" oder "iterierbar‚".

Ein Iterator ist ein Objekt, das iteriert werden kann. Es gibt zwar einige integrierte Objekte, mit denen Sie iterieren können, Sie können aber auch eigene definieren.

In diesem Handbuch werden wir uber Python-Iteratoren, ihre Funktionsweise und wie Sie sie in Ihrem Code verwenden können. Wir konstruieren unseren eigenen Iterator, damit Sie ihre Kernfunktionen in Aktion kennenlernen können. Der Code in dieser Anleitung ist mit Python 3.x-Installationen kompatibel.

Lass uns loslegen!

Was ist ein Iterator?

Iteratoren sind Objekte, uber die Sie iterieren können. Ein Iterator gibt Daten von diesem Objekt einzeln zuruck.

Sie können uberprufen, ob ein Objekt iterierbar ist, indem Sie versuchen, es durch eine for-Schleife; Wenn Sie das Objekt durchlaufen können, bedeutet dies, dass es iterierbar ist. Strings, Listen, Tupel und Wörterbucher sind Beispiele fur integrierte Datentypen, die iterierbare Objekte sind.

Ein Iteratorobjekt in Python muss zwei Methoden haben:

  • __iter__(): Damit k√∂nnen Sie einen Iterator abrufen.
  • __next__(): Damit erhalten Sie den n√§chsten Wert in einem Iterator.

Die __ Unterstriche werden in Iteratoren verwendet, weil sie spezielle Funktionen bezeichnen. Um einen Iterator zu definieren, mussen Sie diese beiden speziellen Funktionen verwenden. Zusammen werden sie als Iteratorprotokoll bezeichnet. Diese Methoden werden normalerweise als "iter- und next-Methoden" ausgesprochen.

81 % der Teilnehmer gaben an, dass sie sich nach dem Besuch eines Bootcamps hinsichtlich ihrer Berufsaussichten im Tech-Bereich sicherer fuhlten. Lassen Sie sich noch heute in ein Bootcamp einweisen.

Der durchschnittliche Bootcamp-Absolvent verbrachte weniger als sechs Monate mit dem Karriereubergang, vom Beginn eines Bootcamps bis zur Suche nach seinem ersten Job.

Wir beginnen mit dem Grundlagen: Erstellen eines unendlichen Iterators. Dies ist die einfachste Art von Iterator. Es ist so einfach, dass es ewig so weitergehen wird. Wir werden dies später in der Anleitung beheben.

Beginnen wir mit der Definition einer Klasse namens Cakes, die unsere Iterator-Klasse sein wird:

Wir haben einen __init__ deklariert -Methode, die ausgefuhrt wird, sobald ein Objekt unserer Klasse instanziiert wird. Die Methode __init__ wird als Konstruktor bezeichnet. In diesem Beispiel kann unsere Methode __init__ Nehmen Sie einen Wert auf: value.

Als Nächstes erstellen wir unser Iteratorprotokoll:

Die Methode __iter__ wird zum Abrufen verwendet unser Iterator-Objekt. Der __next__ Methode ermöglicht es uns, den nächsten Wert in dem von uns angegebenen iterierbaren Objekt abzurufen.

Stellen Sie sicher, dass unser Code soweit funktioniert. Dazu definieren wir ein Objekt unserer Klasse wie folgt:

So weit, so gut! Sie denken sich vielleicht: Warum tut dieser Code nichts? Das liegt daran, dass unsere Klasse nur eine Iteratorfunktion zuruckgibt.

Wir mussen unseren Iterator durchlaufen, um zu uberprufen, ob er funktioniert. Wir können dies mit einer for-in-Schleife tun:

Unser Code gibt Folgendes zuruck:

Der Fluch des Vanilleschwamms! Es wird einfach weiter auf die Konsole gedruckt. Was ist los? Wir haben gerade unseren ersten Iterator erstellt. Es ist sehr einfach, aber es funktioniert.

Testen von Iteratoren mit for-in-Schleifen in Python

Bevor wir unseren Iterator nutzlich machen, nehmen wir uns einen Moment Zeit, um das Konzept von . zu uberarbeiten eine for-in-Schleife. In unserem letzten Beispiel haben wir eine for-in-Schleife geschrieben, um unseren Code zu testen:

Eine for-in-Schleife funktioniert so, dass sie zuerst einen Iterator eines Objekts mit einer __iter__()-Methode erstellt. Eine for-in-Schleife ruft dann __next__() auf, bis kein Wert zuruckgegeben wird.

Sie können sich eine for-in-Schleife als eine einfache while-Schleife vorstellen. Es gibt zwar Werte, die ein Iterator zuruckgeben kann, eine for-in-Schleife gibt diese Werte zuruck.

Einen nutzlichen Iterator erstellen

Unser letzter Iterator ist nicht sehr nutzlich. Er gibt nur den gleichen Wert immer wieder aus. es ist immer noch ein Iterator: Es kann alle Objekte in einem Iterable lesen.

Wir werden einen Iterator erstellen, der uber ein Python-Array. Dieses Array enthält eine Liste von Kuchen.

Um zu verhindern, dass sich unser Iterator unendlich wiederholt, werden wir verfolgen, wie viele Werte sich in unserem iterierbaren befinden , und wie oft unser Iterator ausgefuhrt wurde. Dadurch können wir die Ausfuhrung unseres Iterators stoppen, sobald er alle Elemente in einem Iterable durchlaufen hat.

Öffnen Sie eine neue Python-Datei und fugen Sie den folgenden Code ein:

Dieser Iterator ist etwas komplizierter als unser letzter. Aus diesem Grund haben wir zuerst einen unendlichen Iterator erstellt. In diesem Iterator haben wir drei Werte initialisiert:

"Karriere-Karma trat in mein Leben ein, als ich es am dringendsten brauchte und half mir schnell bei einem Bootcamp. Zwei Monate nach meinem Abschluss fand ich meinen Traumjob das mit meinen Werten und Zielen im Leben ubereinstimmt!"

Venus, Software Engineer bei Rockbot

In unserem __next__() haben wir eine ‚"if‚" Aussage. Diese Anweisung uberpruft, ob die Anzahl der Durchl√§ufe unseres Iterators (Anzahl) geringer ist als die Anzahl der Elemente, uber die unser Iterable iterieren soll (max).

Wenn "Anzahl‚" kleiner als "max‚" ist, findet unser Iterator den n√§chsten Wert im iterierbaren Objekt. Es wird dann 1 zu unserer "Z√§hlung‚" Variable, damit wir verfolgen k√∂nnen, wie viele Objekte noch zum Durchlaufen ubrig sind. Dann geben wir den berechneten Wert zuruck.

Es ist wichtig zu beachten, dass wir der Variablen "to_return‚" einen Wert zuweisen, bevor wir die Variable "count‚" aktuelle Iteration unseres Iterators.

Wenn wir uber jedes Element in unserer Liste iteriert haben, wird eine Ausnahme namens StopIteration ausgelöst. Dadurch wird unser Programm angehalten, sobald wir jedes Element in der Liste durchlaufen haben list.

Sehen Sie, ob unser Iterator funktioniert. Fugen Sie Ihrem Hauptprogramm den folgenden Code hinzu und fuhren Sie ihn aus:

Unser Code gibt zuruck:

Lassen Sie uns noch ein paar Elemente hinzufugen unsere Liste und d sehen was passiert:

Unser Code gibt zuruck:

Wir haben es geschafft! Wir haben erfolgreich einen Iterator erstellt, der unsere Kuchenliste durchläuft. Du verdienst einen Kuchen – oder auch nur ein kleiner Kuchen – um so weit zu kommen.

Schlussfolgerung

Iteratoren ermöglichen es Ihnen, Objekte zu erstellen, die iteriert werden können. Ein Iterator kann eine Liste, einen String oder ein anderes iterierbares Objekt durchlaufen und eine bestimmte Aktion ausfuhren.

Sind Sie bereit fur eine Herausforderung? Erstellen Sie einen Iterator, der eine Liste von Zahlen durchläuft und jede Zahl multipliziert mit zwei zuruckgibt.

Der Code fur diesen Iterator ähnelt unserem obigen Beispiel – es wird weiterhin das Iteratorprotokoll verwenden – es sollte jedoch jede Zahl in einer Liste mit zwei multiplizieren, bevor sie an das Hauptprogramm zuruckgegeben wird.

Jetzt sind Sie bereit, Ihre eigenen Iteratoren in Python wie ein Experte zu schreiben!