Iteratormethoden
Jedes Iteratorobjekt enthält die folgenden zwei Methoden.
Diese Methode wird verwendet, um das iterable Objekt zu initialisieren. Das zurückgegebene Objekt hat die Methode '_ _nächste_ _()'In Python 3.
Diese Methode gibt den nächsten Wert des iterbaren Objekts zurück. Die Beziehung zwischen dem Iterator und dem iterbaren Objekt ist im folgenden Diagramm gezeigt.
Iterieren mit Schleifen
Es wurde früher erwähnt, dass das 'für'Loop nennt das' 'nächste()'Methode implizit bei der Iterierung eines iterbaren Objekts. Wenn eine Schleife zum Iterieren eines iterablen Objekts verwendet wird, ist das 'die'für'Loop nennt das' 'nächste()"Methode implizit und die"während'Loop nennt das' 'nächste()' oder '__nächste__()'Methode explizit, um den nächsten Wert des iterbaren Objekts zu lesen. Beide Arten von Schleifen nennen diese Methode weiterhin, bis die 'Stopperation'Signal wird erzeugt.
Beispiel 1: iterierende iterbare Objekte mit 'for' Loop
Das folgende Skript zeigt die Verwendung von 'für'Loops zum Iterieren von fünf verschiedenen iterbaren Objekten. Der erste 'für'Schleife wird verwendet, um den Stringwert zu iterieren und jedes Zeichen der Zeichenfolge in jeder Iteration zu drucken. Der Zweite 'für'Schleife wird verwendet, um den Inhalt einer vorhandenen Textdatei zu iterieren und jede Zeile der Datei in jeder Iteration zu drucken. Der dritte 'für'Schleife wird verwendet, um die Werte eines Tupels zu iterieren. Die vierte 'für'Schleife wird verwendet, um die in einer Liste enthaltenen Werte zu iterieren. Der fünfte 'für'Schleife wird verwendet, um die in einem Wörterbuch enthaltenen Werte zu iterieren.
# Iteriert eine Zeichenfolge, die für die Schleife verwendet wirdAusgang
Die folgende Ausgabe zeigt, dass die Zeichen des Stringwerts; die Linien der prüfen.txt Datei; und die Elemente der Tupel, der Liste und des Wörterbuchs werden nach dem Ausführen des Skripts gedruckt.
Beispiel 2: Iterierende Listen mit 'while' Loop
Das folgende Skript zeigt die Verwendung eines 'während'Schleife für die Iterierung einer Datenliste. Hier das 'iter ()"Methode wird verwendet, um das iterable Objekt und das" zu initialisierennächste()'Methode wird verwendet, um den nächsten Wert des iterbaren Objekts zu lesen. Stopperation Signal wird verwendet, um vom Unendlichen zu enden. 'während' Schleife, wenn kein Element der Liste zum Lesen übrig geblieben ist.
# Eine Liste definierenAusgang
Die folgende Ausgabe zeigt, dass jeder Wert der Liste in jeder Zeile unter Verwendung des 'nächste()'Methode nach dem Ausführen des Skripts.
Beispiel 3: Iteriert ein Tupel mit '__next __ ()' Methode und 'while
Im folgenden Skript beide 'nächste()' Und '__nächste__()'Methoden werden zur Iterierung der Werte eines Tupels verwendet. Der 'iter ()"Methode wird verwendet, um das iterable Objekt mit dem Namen" zu erstellen. "init_iter.' Hier das 'nächste()'Methode wird zweimal aufgerufen, um die ersten beiden Werte des Tupels zu drucken. Als nächstes ein Unendlicher 'während"Schleife wird verwendet, um die verbleibenden Werte des Tupels und der" zu iterierenStopperation'Signal wird verwendet, um wie im vorherigen Beispiel aus der Schleife zu enden.
# Definieren Sie ein TupelAusgang
Die folgende Ausgabe zeigt, dass nach dem Ausführen des Skripts die ersten beiden Werte 'Vogel' Und 'Löwe,'werden mit dem gedruckt' gedruckt 'nächste()"Methode, während die anderen drei Werte"Affe,"Schlange,' Und 'Elefant,'werden mit dem gedruckt' gedruckt '__nächste__()' Methode.
Iterieren mit einem benutzerdefinierten Iterator
Dieser Abschnitt zeigt, wie unterschiedliche Arten von benutzerdefinierten Iteratoren durch Erstellen von Klassen implementiert werden können. Beide '__iter __ ()' und das '__nächste__()"Methoden werden in einer Klasse implementiert und die"während'Schleife wird verwendet, um die Werte des iterbaren Objekts zu iterieren. Der nächste Teil dieses Artikels zeigt auch, wie Sie einen unendlichen benutzerdefinierten Iterator erstellen und die Iteration kontrollieren.
Beispiel 4: Verwendung eines einfachen benutzerdefinierten Iterators
Mit dem folgenden Skript können Sie den Wert von berechnen XN Durch die Verwendung eines benutzerdefinierten Iterators ohne integrierte Funktion von Python. Die Klasse namens 'x_to_the_power_n'wird im Skript deklariert. Der '__drin__()'Methode der Klasse wird die Werte von initialisieren X Und N Das wird zum Zeitpunkt der Objekterstellung verwendet. Der '__iter __ ()"Methode initialisiert die Klassenvariable, die die" speichert "Ergebnis'Variable der Berechnung in jeder Iteration. Die Werte von X Und N wird vom Benutzer als Eingabe angenommen. Ein Objekt der Klasse 'Zahlen'ist erstellt mit X Und N. Als nächstes ein iterables Objekt benannt 'iter_obj"wird erstellt, um das zu nennen"__nächste__()'Methode für N-1 Zeiten mit der ''während'Schleife, um den Wert von zu berechnen XN. In jeder Iteration der Wert von X wird mit dem vorherigen Wert der 'multipliziert werdenErgebnis'variabel. Nach Beendigung der ''während'Schleife, die' '__nächste__()'Methode wird erneut aufgerufen, um den Wert von zu drucken XN.
"Erstellen Sie eine Klasse, um die zu berechnenAusgang
Die folgende Ausgabe zeigt das 2 wird als Wert von angenommen X Und 4 wird als Wert von angenommen N. Das Skript berechnete also den Wert von 24 sein 16.
Beispiel 5: Verwendung eines unendlichen benutzerdefinierten Iterators
Das folgende Skript druckt kontinuierlich die Zahlen, die durch 5 mit einer Verzögerung von einer Sekunde teilbar sind, bis der Benutzer drückt Strg + c um das zu erzeugen 'Keyboarinterrupt'Signal. Das Unendliche 'währendDie Schleife wird hier verwendet, um einen unendlichen benutzerdefinierten Iterator zu erstellen. Der 'Zeit'Modul wird am Anfang des Skripts importiert, um das zu verwenden'schlafen()Methode, um jeden Ausgang um eine Sekunde zu verzögern. Die Zahl 5 wird in die 'initialisiertnum"Variable als erste teilbare Zahl im Skript, und die nächste Zahl wird generiert, indem 5 mit dem vorherigen Wert der" hinzugefügt wird "num'variabel.
# Zeitmodul importierenAusgang
Die folgende Ausgabe zeigt, dass die Zahl mit dem Drucken von 5 mit dem Drucken begann und die nächsten Zahlen nacheinander kontinuierlich mit einer Sekunde dauerte. Wenn der Benutzer drückte Strg + c Nach dem Drucken der Nummer 60, die Nachricht 'Strg+C wird gedrückt.'wurde gedruckt, bevor das Skript beendet wurde.
Beispiel 6: Kontrolle eines benutzerdefinierten unendlichen Iterators
Das folgende Skript zeigt, wie der benutzerdefinierte unendliche Iterator nach Abschluss einer bestimmten Anzahl von Iterationen gestoppt werden kann. Der '__iter __ ()"Methode der Klasse wird die Werte der" initialisieren "N' Und 'Ergebnis'Klassenvariablen. Das Skript berechnet die Quadrate der Zahlen, beginnend mit 1, das werden in der Variablen gespeichert N, und drucken Sie den quadratischen Wert von N bis zum Wert von N ist größer als 5. Eine unendliche während der Schleife wird hier erklärt, das zu nennen ''__nächste__()'Methode zum Drucken des quadratischen Werts von N. Wenn der Wert von N erreicht 6, Die 'Stopperation'Signal erzeugt, um die Schleife zu beenden.
# Zeitmodul importierenAusgang
Die folgende Ausgabe zeigt, dass der unendliche benutzerdefinierte Iterator beendet wurde, als der Wert von n größer als 5 wurde. Das Skript berechnete und druckte die quadratischen Werte der Zahlenwerte von 1 bis 5.
Iterieren mit itertools
Python hat ein integriertes Modul namens 'ITertools'Mit dem kann ein Iterator zum Iterieren von Daten mit einer Schleife erstellt werden. Der nächste Abschnitt dieses Artikels zeigt, wie in diesem Modul drei Funktionen verwendet werden.
ITertools.zählen()
Der 'itertools.Fortsetzung'Funktion kann mit dem' verwendet werden 'Karte()'Methode zum Generieren von sequentiellen Daten und mit dem' 'Reißverschluss()'Methode zum Hinzufügen von Sequenzen unter Verwendung des Zählparameters dieser Methode. Die Syntax dieser Funktion ist unten angegeben.
Syntax
ITertools.count (start = 0, Schritt = 1)Hier der erste Parameter, 'Start,'wird verwendet, um den Startwert der Sequenz zu definieren und 0 ist der Standardwert dieses Parameters. Der zweite Parameter, 'Schritt,'wird verwendet, um den Unterschied zwischen den aufeinanderfolgenden Zahlen festzulegen und 1 ist der Standardwert dieses Parameters.
Beispiel 7: Verwendung von count () Funktion von iTertools
Das folgende Skript berechnet die Summe aus 0 Zu N Zahlen, wo der Wert von N wird dem Benutzer entnommen. Der 'zählen()"Funktion wird von" importiert "ITertools'Zu Beginn des Skripts. Der 'my_iterator"Objekt wird mit dem 'initialisiert"zählen()'Funktion, mit einem' 'Start'Wert von 0 und a'Schritt'Wert von 1. Als nächstes das ''sum_result'Variable wird durch den ersten Wert des iterablen Objekts initialisiert. Der Startwert wird in die Variable initialisiert ich und die Startnummer wird als Zeichen in der Variablen gespeichert, Zahlen, mit denen andere Zahlen in jeder Iteration kombiniert werden. Die Werte der sequentiellen Zahlen werden in jeder Iteration hinzugefügt, wenn die 'nächste()'Methode heißt. Wenn der Wert von ich wird größer als N, Das Skript endet, indem das Ergebnis der Summe angezeigt wird.
"Das folgende Skript wird berechnetAusgang
Die folgende Ausgabe zeigt, dass die Zahl 10 wird als Eingabe angenommen. In dieser Ausgabe hat das Skript die Summe von 0 bis 10 berechnet und die Ausgabe gedruckt, 0+1+2+3+4+5+6+7+8+9+10 = 55.
ITertools.Zyklus()
Diese Funktion enthält nur ein Argument, das jedes Objekt sein kann. Der Zweck dieser Funktion besteht darin, die Werte des Objekts nach Abschluss der Iteration aller Werte zu wiederholen. Hier, Strings, Tupel, Listen usw. kann als Objekt verwendet werden. Die iterablen Objektrenditen dieser Funktion werden verwendet, um jeden Wert des Objekts zu iterieren, das als Argument verwendet wird, indem das 'verwendet wirdnächste()' Methode. Die Anzahl der Werte des iterbaren Objekts basiert auf der Anzahl der Iterationen der Schleife. Die Syntax dieser Funktion ist unten angegeben.
Syntax
ITertools.Zyklus (Objekt)Beispiel 8: Verwendung von Cycle () Funktion von iTertools
Der 'willkürlich' Und 'ITertools'Module werden zu Beginn des Skripts importiert, um eine Zufallszahl zu generieren und die zu verwendenZyklus()'Funktion aus der'ITertools'Modul zum Wiederholen der Daten. Eine Liste von drei Zufallszahlen wird als Argument der 'verwendet' verwendetZyklus()'Funktion. Das iterable Objekt benannt ''num_list'wird durch den Rückgabewert dieser Funktion initialisiert. Der 'zählen'Variable wird initialisiert zu initialisiert 0, und wenn der Wert dieser Variablen wird 6, Die 'während'Schleife endet endet. Also die 'während'Schleife wird sechs Mal iterieren, und jeder Wert der Liste wiederholt sich nur einmal.
# Zufallsmodul importierenAusgang
Die folgende Ausgabe zeigt, dass drei Zufallszahlen, 3, 17, Und 185, wurden als Listenelemente generiert. Die Schleife wird sechsmal iteriert, und diese drei Werte werden für die nächsten Iterationen wiederholt.
ITertools.wiederholen()
Die Funktion 'repep ()' 'funktioniert wie ein unendlicher Iterator und kann zwei Argumente aufnehmen. Wenn das zweite Argument weggelassen wird, funktioniert die Funktion 'repep ()' als unendlicher Iterator und wiederholt den Wert unendlich viele Male. Diese Funktion belegt für jede Wiederholung keinen Speicher. Es schafft nur die Variable einmal im Speicher und wiederholt dieselbe Variable. Eine unendliche Anzahl oft, wenn nur ein Argument für diese Funktion festgelegt ist. Die Syntax dieser Funktion ist unten angegeben.
Syntax
ITertools.Wiederholen (Wert, Grenze)Das erste Argument wird verwendet, um den Wert zu nehmen, der sich wiederholt. Das zweite Argument ist optional und wird verwendet, um die Grenze von Wiederholungen festzulegen.
Beispiel 9: Verwendung von Repeat () Funktion des ITertools -Moduls
Der 'ITertools'Modul wird zu Beginn des Skripts importiert, um das zu verwendenwiederholen()'Funktion. Der Benutzer wird vom Benutzer wiederholt, und vom Benutzer wird ein Zahlenwert genommen, um die Wiederholungsgrenze festzulegen. Der Rückgabewert der 'wiederholen()"Funktion wird dann in eine Liste mit der" konvertiert "Liste()'Methode und in der' gespeichert 'ListData'variabel. Die Werte der 'ListData"wird mit dem" gedruckt 'gedruckt'für'Schleife.
# ITertools -Modul importierenAusgang
Die folgende Ausgabe zeigt, dass 'Python'wird als Stringwert angenommen, und 3 wird als die Nummer genommen, mit der der Zeichenfolgenwert nach dem Ausführen des Skripts wiederholt wird. Die Ausgabe zeigt, dass die Zeichenfolge 'Python'wird dreimal wiederholt.
Abschluss
Das Konzept des Iterators und die Verwendungen verschiedener Arten von Iteratoren in Python werden versucht, die sehr einfachen Beispiele in diesem Artikel zu erklären. Python-Benutzer können einen integrierten Iterator verwenden oder ihren benutzerdefinierten Iterator basierend auf den Anforderungen erstellen. Dieser Artikel hilft den Python -Benutzern, über die im Iterator verwendeten Methoden zu erfahren und wie diese Methoden mit jeder Schleife funktionieren, um iterable Objekte zu lesen. Einige Verwendungszwecke von ITertools Python -Modul werden in diesem Artikel auch erläutert, um weitere Details des Iterators in Python zu erfahren.