Ich versuche, Elemente aus meiner Liste zu entfernen, wenn eine Bedingung wahr ist, und dann am Anfang der Liste erneut zu iterieren. Im Anschluss ist mein Code:Bedingtes Entfernen von Elementen aus der Liste und Iteration von Anfang an durch Python-Schleife
from random import randint
x = [1,2,3,4,5]
for item in x:
print("item is " + str(item))
z = randint(1, 5)
print("z is " + str(z))
if z == item:
x[:] = [item for item in x if item != z]
print("Remaining list is " + str(x))
else:
print("Remaining list is " + str(x))
So zum Beispiel, mein erstes Element in der Liste x
1 und läßt 1. z sagen ist auch, wenn z == item
, entfernt meine x
Liste das erste Element (1) und wird aktualisiert [2,3,4,5]. Aber ich bekomme die folgende Ausgabe:
item is 1
z is 1
Remaining list is [2, 3, 4, 5]
item is 3
z is 2
Remaining list is [2, 3, 4, 5]
Anstatt die Schleife von 2 in meiner kürzlich aktualisierte Liste Neustart [2,3,4,5], beginnt die Schleife von der zweiten Position, die 3. ist Wie kann ich Neustart der Schleife von Anfang an jedes Mal, wenn meine Liste aktualisiert wird? Danke!
Wenn Sie die Größe von Listen ändern, während Sie darüber iterieren, führt dies zu einer Reihe von Fehlern hintereinander. Erstellen Sie stattdessen eine neue Liste und ersetzen Sie dann die alte Liste am Ende der Schleife. –