Fallstricke bei der Verwendung einer for-Schleife zum Löschen von Elementen in einer Liste in Python3

不言
Freigeben: 2018-04-19 11:28:45
Original
2286 Leute haben es durchsucht

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))
Nach dem Login kopieren


Ergebnis:


<class &#39;list_iterator&#39;>
1
2
3
Nach dem Login kopieren


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)
Nach dem Login kopieren


Ergebnis:


1
2
4
5
6
[1, 3, 4, 5, 6]
Nach dem Login kopieren


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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage