Gleichzeitig mehrere Spalten aus Tabelle 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
gottlieb
User
Beiträge: 21
Registriert: Freitag 15. März 2013, 14:22

Hallo,
ich habe mal wieder eine Frage.
Hab eine große Tabelle, eingelesen mit readlines() und dann mit split() die Werte voneinander getrennt. Die Zeilen liegen also als einzelne Listen vor. Alle gleichlang, da aus Excel Datei.

Ich habe nun eine weitere Liste mit Spalten die gelöscht werden müssen. In der Liste sind die Indices der Spalten. Wenn ich in einer Schleife die Liste durchlaufe und aus jeder Zeile den entsprechenden Wert lösche geht das logischerweise nicht gut. Die Zuordnung der Indices zu den Spalten stimmt nach dem ersten Durchlauf natürlich nicht mehr.

Deswegen die Frage, gibt es eine andere Möglichkeit, mehrere Werte aus einer Liste zu löschen? Ich habe bisher immer nur gefunden, dass man Intervalle löschen kann, aber was ist wenn die Indices gestreut sind?

zb:

Code: Alles auswählen

indices = [2, 5, 6, 9, 14, 20]
Gruß
BlackJack

@gottlieb: Geh einfach den umgekehrten Weg: Nicht löschen, sondern eine neue Liste für jede Zeile erstellen, wo die entsprechenden Indizes weg gelassen werden.

Ungetestet:

Code: Alles auswählen

indices = set([2, 5, 6, 9, 14, 20])
rows = [[x for i, x in enumerate(row) if i not in indices] for row in rows]
Im Idealfall macht man das schon beim Einlesen um Speicher zu sparen. Und wenn Excel in diesem Fall CSV bedeutet, dann vielleicht das Einlesen auch mit dem `csv`-Modul statt `readlines()` und `split()`.
Antworten