2016-10-22 2 views
-3

Betrachten Sie diesen Schnipselein Element aus einer Liste entfernen for-Schleife

k=[0, 5, 12, 94] 
a=max(k) 

Ich beabsichtige, das größte Element für die Liste for-Schleife zu löschen.

for a in k: 
    k.remove(a) 

erwartete ich die Antwort

[0,5,12] 

sein wird, aber die angezeigte Antwort ist

[5,12] 

ich etwas fehle? Es funktioniert gut mit While-Schleife.

+2

Iterieren durch eine Liste während Mutationen führen zu Problemen; tun Sie einfach 'k.remove (a)' sofort. warum die for-loop-Anforderung? –

+0

Vielen Dank für Ihre Antwort. Ich erkunde nur verschiedene Möglichkeiten. –

+0

Ich habe Schleifen verwendet, wenn das maximale Element wiederholt wird. z.B. '6'in' [1,2,6,6,6] ' –

Antwort

0

Wenn Sie eine neue Liste erstellen möchten, bei der der Maximalwert vollständig eliminiert wurde, verwenden Sie ein Listenverständnis, das die Elemente ungleich a = max(k) auswählt.

Das heißt:

k = [0, 1, 6, 6, 6] 
a = max(k) 

result = [i for i in k if i != a] 

Dies in einer Liste Ergebnisse mit:

[0, 1] 

Als Nebenwirkung, sollten Sie wissen, dass Sie den Namen a in der for Klausel der Schleife zuweisen Maskiert die a, die Sie mit a = max(k) definiert haben.

Als Ergebnis versucht die for-Schleife, alle Elemente aus der Liste zu entfernen.

Verwandte Themen