Der folgende Artikel wird Ihnen eine ausführliche Diskussion über die Fallstricke der Verwendung einer for-Schleife zum Löschen von Elementen in einer Liste in Python3 geben. Er hat einen guten Referenzwert und ich hoffe, dass er für alle hilfreich sein wird. Schauen wir uns das gemeinsam an
Das Objekt der for-Schleifenanweisung ist ein iterierbares Objekt, das die Methode __iter__ oder iter implementieren und einen Iterator zurückgeben muss. Iteratoren müssen lediglich die Methode __next__ oder next implementieren.
Lassen Sie uns nun überprüfen, warum die Liste die Iteration unterstützt:
x = [1,2,3] its = iter(x) # its = x.__iter__() print(type(its)) # print(its.__next__()) # print(its.__next__()) # print(its.__next__()) print(next(its)) print(next(its)) print(next(its))
Ergebnis:
<class 'list_iterator'> 1 2 3
Wie die for-Anweisung Schleifen durchführt Wollstoff? Die Schritte sind:
(1) Bestimmen Sie zunächst, ob das Objekt ein iterierbares Objekt ist. Wenn nicht, melden Sie einen Fehler direkt und lösen Sie eine TypeError-Ausnahme aus Methode und geben Sie eine zurück. Der Iterator
(2) ruft kontinuierlich die __next__- oder next-Methode des Iterators auf und gibt jedes Mal nacheinander einen Wert im Iterator zurück, wenn
(3) bis zum Ende iteriert. keine Updates Wenn mehrere Elemente vorhanden sind, wird eine Ausnahme StopIteration ausgelöst. Python behandelt diese Ausnahme selbst und stellt sie den Entwicklern nicht zur Verfügung
list1 = [1,2,3,4,5,6] for i in list1: if i == 2: list1.remove(i) print(i) print(list1)
Ergebnis:
1 2 4 5 6 [1, 3, 4, 5, 6]
Das Ergebnis wurde gedruckt Beim zweiten Ausdruck ist es offensichtlich, dass nach dem Löschen der Liste von Element 2 im ersten Ausdruck keine 3 vorhanden ist. Denn beim Ausführen der for-Anweisung wird zunächst ein Iterator generiert und dann die nächste Methode verwendet, um die Werte zurückzugeben im Iterator der Reihe nach gelöscht wird, wird der Index von Element 3 zum Index des ursprünglichen Elements 2, wodurch Element 3 an die Position von Element 2 verschoben wird, sodass die nächste Methode nicht den Wert 3 zurückgibt Verwenden Sie in Python die Iter-Funktion, um eine geordnete Aggregationstyp-Iteration zu erhalten. Ich persönlich verstehe den Iterator als eine einseitig verknüpfte Liste mit einem nächsten Zeiger. Der erhaltene Iterator ist der Header der verknüpften Liste, der Header-Inhalt ist leer Der nächste Zeiger zeigt auf das erste Element des geordneten Aggregattyps.
Beim Zugriff auf den nächsten Zeiger des letzten Elements der verknüpften Liste meldet Python einen StopIteration-Fehler.
Verwandte Empfehlungen:
Fallstricke, auf die Sie beim Löschen von Elementen aus der Python-Liste achten sollten
Das obige ist der detaillierte Inhalt vonFallstricke bei der Verwendung einer for-Schleife zum Löschen von Elementen in einer Liste in Python3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!