Listenelemente vergleichen und löschen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Mr. Q
User
Beiträge: 10
Registriert: Freitag 5. Oktober 2007, 19:48

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]
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:
Mr. Q
User
Beiträge: 10
Registriert: Freitag 5. Oktober 2007, 19:48

Vielen Dank!
Antworten