Seite 1 von 1

Löschen von bestimmten Listenelementen

Verfasst: Montag 9. Dezember 2013, 17:19
von Malinka
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]

Re: Löschen von bestimmten Listenelementen

Verfasst: Montag 9. Dezember 2013, 17:28
von Leonidas

Code: Alles auswählen

words = words[::3]

Re: Löschen von bestimmten Listenelementen

Verfasst: Montag 9. Dezember 2013, 17:32
von Malinka
Das ist ja einfach. Vielen vielen Dank Leonidas.

Re: Löschen von bestimmten Listenelementen

Verfasst: Montag 9. Dezember 2013, 19:59
von 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.