Seite 1 von 1

Listenelemente vergleichen und löschen

Verfasst: Freitag 5. Oktober 2007, 20:05
von Mr. Q
Hallo,
ich habe ein Programm geschrieben, dass eine Liste F erstellt. Diese wird am Ende des Programms noch gekürzt, die Elemente die kleiner als fünf sind werden gelöscht.
So sollte es jedenfalls ablaufen.
Hier das Programm mit Ergebnis

Code: Alles auswählen

F=[0,1,2,3,4,5,6,7,8,9]
for i in F:
    if i<5: del F[i]
print F
--> [1, 2, 4, 5, 7, 8, 9]

Verfasst: Freitag 5. Oktober 2007, 20:28
von BlackJack
Du hast da gleich zwei Probleme: Erstens löscht Du aus einer Liste über die Du gleichzeitig iterierst, d.h. alle Elemente nach dem gelöschten werden eins nach vorn geschoben wodurch in der Schleife Elemente übersprungen werden. Zweitens löscht ``del F`` das Element mit dem *Index* `i` und nicht mit dem *Wert* `i`.

Das einfachste wäre eine "list comprehension":

Code: Alles auswählen

F = [i for i in F if i >= 5]
Edit: Peinlich ─ die ``if``-Bedingung war verkehrt herum. :oops:

Verfasst: Sonntag 7. Oktober 2007, 19:23
von Mr. Q
Vielen Dank!