Löschen von bestimmten Listenelementen

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
Malinka
User
Beiträge: 18
Registriert: Donnerstag 29. August 2013, 15:53

Ich weiß, dass ich schon eineren anderen Thread gestartet habe. Da es sich jedoch hier um etwas anderes handelt, hoffe ich, es ist okay, wenn ich dafür einen neuen eröffne.

Ich habe eine sehr lange Liste und möchte bestimmte Einträge nach folgendem Muster löschen: Es soll jeder dritte Eintrag erhalten bleiben, beginnend ab dem ersten. Ich möchte also den ersten Eintrag behalten, die nächsten 2 löschen usw.

Einzeln würde das ja folgendermaßen aussehen. Das würde ich glatt machen, wenn meine Liste nicht aus einigen Tausend Wörtern bestehen würde.
Wie muss jetzt die for-Schleife aussehen, wenn ich über die ganze Liste gehen möchte?

Code: Alles auswählen

datei = open("text.txt", 'r', encoding='utf-8')
text = datei.read()
words = text.split()
del words[1:3]
del words[2:4]
del words[3:5]
del words[4:6]
del words[5:7]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Code: Alles auswählen

words = words[::3]
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Malinka
User
Beiträge: 18
Registriert: Donnerstag 29. August 2013, 15:53

Das ist ja einfach. Vielen vielen Dank Leonidas.
BlackJack

@Malinka: Elemente aus Listen löschen ist in Python eher ungewöhnlich. Normalerweise erstellt man einfach eine neue Liste in die man nur die Elemente aufnimmt, die man behalten möchte. In Deinem Fall ging das über die Schrittweite in der „slicing”-Notation sehr einfach. Wenn man zum Löschen die Elemente auf bestimmte Kriterien prüfen möchte dann gibt es `filter()`, `itertools.ifilter()`, oder das ``if`` bei der „list comprehension”-Syntax oder Generatorausdrücken.
Antworten