Mehrere Listen automatisch definieren

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
Crinchy
User
Beiträge: 2
Registriert: Donnerstag 11. Juni 2020, 16:53

Hallo zusammen,

ich habe eine Datei, in der sich 100 Reihen mit jeweils 10 Zahlenwerten befinden. Jede einzelne Zeile mit diesen jeweils 10 Zahlenwerten möchte ich automatisiert in eine eigene Liste einfügen. Bei einer definierten Liste funktioniert das für eine Zeile. Aber wie kann ich die 100 Listen definieren, um die jeweiligen Zahlenwerte einzufügen?

Ich habe schon lange danach gesucht und nichts gefunden. In den Tutorials habe ich nur gefunden, wie man Elemente hinzufügt, löscht oder adressiert.

Vielen Dank für eure Hilfe.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Es ist egal, ob Du Zahlen in eine Liste einfügst, oder Listen. Wenn Du also Listen mit Zahlen erzeugen kannst, dann hast Du alles, um Dein Problem zu lösen.
Also eine Liste mit 100 Einträgen.

Wie sieht denn Dein Code bisher aus?

Was willst Du damit machen? Je nachdem könnte Numpy oder Pandas nützlich sein.
Crinchy
User
Beiträge: 2
Registriert: Donnerstag 11. Juni 2020, 16:53

Ist es denn prinzipiell möglich, wie in diesem Beispiel dargestellt, die 100 Einträge jeweils in generierte Listen zu schreiben?
Also liste1, liste2, liste3, .... liste100

Code:

with open('Datei.txt') as csvfile:
lines = csvfile.readlines()
n=1
while n <= 100
liste(n) = [lines [n]]
n=n+1


So in der Art würde ich mir das vorstellen. Das mit "liste(n)" funktioniert allerdings nicht. Kann man das irgendwie bewerkstelligen?
Als Ergebnis sollen also 100 Listen mit jeweils 10 Einträgen vorhanden sein.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Statt Variablennamen durchzunummerieren nimmt man eine Liste. Und die hast Du schon, `lines`.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Schreib deinen Code immer in Code-Tags. Die werden eingefügt, wenn du in "Vollständiger Editor & Vorschau" den </> Button drückst.

Dann rätst du hier offensichtlich Syntax. Raten nützt aber nichts.

Wenn du, wie du schreibst, weißt wie man bei einer Liste "Elemente hinzufügt, löscht oder adressiert", dann hast du alles Wissen was du brauchst.
Du steckst 10 Einträge in eine Liste.
Und diese Liste steckst du in eine andere Liste.
Dann steckst du 10 Einträge in eine neue Liste.
Und die Liste steckst du in die Liste, in der bereits die erste Liste enthalten ist.

Einer Liste ist egal, was die einzelnen Elemente sind. Die Elemente können auch Listen sein.

Aber wie Sirius3 schon schreibt, genau das hast du schon.
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Crinchy: Wenn das tatsächlich eine CSV-Datei ist, dann möchtest Du vielleicht das `csv`-Modul verwenden um die einzulesen. Und wenn die Datei Zahlen enthält, müsstest Du die dann vielleicht noch tatsächlich in Zahlen umwandeln.

Sollten es mehr als 100 Zeilen in der Datei sein, Du aber nur die ersten 100 davon haben willst, hilft `itertools.islice()` dabei das zu begrenzen. Oder das externe `more_itertools.take()` wenn es auch gleich in einer Liste gesammelt werden soll.

Wenn ich mir den Pseudocode in Deinem Beitrag ansehe, würde ich auch dringend ein Python-Grundlagentutorial empfehlen. Denn eine ``while``-Schleife ist hier das falsche Mittel.

Warum willst Du jede Zeile als einziges Element noch mal in eine Liste stecken? Das macht wenig bis gar keinen Sinn.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten