2017-02-25 2 views
-1
A = [2,4,6,8,10,12] 

for a in A: 
    if a%2 == 0: # If 2 divides a, remove a from A 
    A.remove(a) 

    print(A) 

Wenn ich diesen Code-Block ausführe, ist die Konsolenausgabe [4,8,12].Eine spezielle for-Schleife in Python verstehen

Ich verstehe diesen Code, wenn eines der Elemente in [A] durch 2 teilbar ist, entfernen wir sie aus der Liste. In der obigen Liste sind alle Elemente tatsächlich durch 2 teilbar, aber nur 2, 6 und 10 wurden entfernt. Wer möchte erklären, warum 4, 8 und 12 nicht entfernt wurden?

Antwort

0

Das Entfernen von Elementen aus einer Liste während der Iteration führt zu einer Iteration. Sie sollten stattdessen die Filterfunktion oder ein Listenverständnis verwenden.