Seite 1 von 1

Gleichzeitig mehrere Spalten aus Tabelle löschen

Verfasst: Donnerstag 18. April 2013, 12:56
von gottlieb
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ß

Re: Gleichzeitig mehrere Spalten aus Tabelle löschen

Verfasst: Donnerstag 18. April 2013, 13:03
von 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()`.