Meine Frage kann ein bisschen seltsam und einfach aussehen, aber ich kann keine befriedigende Antwort finden. Ich möchte auf einer Liste iterieren und Elemente daraus entfernen. Das Problem tritt auf, wenn nach einem Löschvorgang noch ein Element in der Liste vorhanden ist: Die Schleife wird nicht auf dem letzten Element durchlaufen, als ob die Liste leer wäre.Dynamisches Entfernen eines Elements aus einer Liste
ich bin mit für .. in .. wie im folgenden Beispiel:
def test_remove(self):
"""Test to remove all values from a list."""
test = [4, 5]
[test.remove(i) for i in test]
print test
ich die folgende Ausgabe bin immer:
[5]
Bedeutet es, dass, wie ich Iterieren tue Auf einer Liste wird die Liste nicht dynamisch skaliert, wenn ein Element gelöscht wird (dasselbe passiert mit i für i in range())? Oder ist es nur, weil ich einfach i = len erreiche, und so kann ich nicht weiter gehen?
Ich könnte immer schummeln und überprüfen, wenn die len gleich 1 ist, aber ich würde gerne verstehen, wenn es eine schönere Möglichkeit ist, dies zu tun.
Vielen Dank.
Ja das habe ich endlich gemacht. Ich dachte für in war in der Lage, diese Art von Loop-Strukturierung zu vermeiden. Vielen Dank :) – Ecterion