2016-11-29 9 views
0

Ich versuche, die Elemente aus einer Liste mit diesem Code zu löschen:Löschen von Elementen aus einer Liste in Python

lst = [1, 0, 0, 0, 1, 0, 0, 1] 
for i in lst: 
    lst = lst.remove(i) 
    print lst 

aber es gibt einen Fehler. Könnte mir jemand helfen zu verstehen, was das Problem ist?

+0

Welche Fehler sind getitng Sie? – Acapulco

Antwort

3

Das Problem ist, dass list.remove kehrt None, also wenn Sie lst = lst.remove(i) gesetzt ist, werden Sie lst von None, so bei der nächsten Iteration zu ersetzen, werden Sie remove-None, anzuwenden versuchen, was nicht möglich ist. Wenn Sie die Zuweisung entfernen, wird kein Fehler mehr angezeigt.

>>> for i in lst: 
...  lst.remove(i) 
...  print lst 
... 
[0, 0, 0, 1, 0, 0, 1] 
[0, 0, 1, 0, 0, 1] 
[0, 0, 0, 0, 1] 
[0, 0, 0, 1] 

Beachten Sie, dass, wenn Sie über eine Liste durchlaufen, während auf diese Weise zu entfernen, werden Sie effektiv jedes andere Element übersprungen, weshalb über die Schleife vorzeitig beenden erscheinen würde:

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8] 
>>> for i in lst: 
...  lst.remove(i) 
...  print(lst) 
... 
[2, 3, 4, 5, 6, 7, 8] 
[2, 4, 5, 6, 7, 8] 
[2, 4, 6, 7, 8] 
[2, 4, 6, 8] 
+0

Vielen Dank! – Vinianel

+0

Gern geschehen! Wenn Sie die Antwort nützlich fanden, möchten Sie sie vielleicht auch akzeptieren. – fuglede

0

remove Die Funktion wird verwendet, wenn Sie einen bestimmten Wert aus der Liste und nicht nach dem Index entfernen möchten. Wenn Sie ein Element aus der Liste nach Index entfernen möchten, verwenden Sie

lst.pop (i).

Link to documentation

Verwandte Themen