Python, der die Hälfte der Elemente in einer Liste löscht, nachdem er durch sie iteriert wurde

Ich bin ganz auf diesem stumpf:

Ich habe folgendes python code:

def remove(self, widgets): for widget in widgets: widget_found = False for widget_sig in self.widgets: if widget_sig.id == widget: #remove all objects from selected widget widget_found = True to_remove = widget_sig.objs for obj in to_remove: #objs are all intances of oo_canvas classes obj.destroy() self._build(widget, obj) if not widget_found: #if we iterated through the entire list and still couldn't find anything raise mockingbird_errs.InternalMockingbirdError("The requested widget was not registered with this builder: "+str(widget)) 

Das sollte ziemlich einfach sein. Die Sache ist, es wird niemals durchlaufen. Aus irgendeinem Grund überspringt es jedes andere Element. Noch mehr verwirrend, ist, wenn ich es ausdrucke die Länge von to_remove vor und nach der for-Schleife, es druckt 254 und 127. Huh? Soweit ich weiß, beinhaltet das Iterieren durch eine Liste nicht das Löschen jedes anderen Elements.

Bin ich etwas einfaches fehlt? Was auf der Erde ist los?

One Solution collect form web for “Python, der die Hälfte der Elemente in einer Liste löscht, nachdem er durch sie iteriert wurde”

… es überspringt jedes andere Element.

Das ist, weil Sie sie löschen, verkürzen die Liste um 1. Und dann gehen Sie auf den nächsten Index. Entweder nach hinten arbeiten oder über eine Kopie der Liste iterieren.

  • Öffnen Sie einen Dateinamen + Datum als csv in Python
  • Python-Pandas: Kombinieren Sie zwei Dataframes nach Datumsindex und einen gemeinsamen Spaltenwert
  • Paramiko Aufnahme Befehl Ausgabe
  • Finden Sie heraus, welches das Duplikat in einer Python-Panda-Datenstruktur ist
  • ImportError: Kein Modul namens Tag
  • Warum bekomme ich falsche Ergebnisse von scipy.optimize.fmin?
  • Iterate über die Liste von führenden und schleppenden mit Multiprocessing
  • Das installierte Python-Skript kann keine Paketmodule importieren
  • Python-dbg kann beim Debuggen nicht Py_InitModule4 finden
  • Argparse schlägt fehl, wenn sie von einem unauffälligen Test angerufen wird
  • Verwendung der zufälligen Funktion zur Randomisierung geplanter Aufgaben
  • Python ist die beste Programmiersprache der Welt.