Listen per Schleife erstellen

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
NedNederlander
User
Beiträge: 10
Registriert: Mittwoch 4. März 2009, 13:25

Dienstag 10. März 2009, 15:02

Ich hab ein kleines Problem, das ich leider nach längerem googlen und Bücher wälzen nicht lösen kann.

Ich habe eine kleien Funktion, die Werte berechnet, und diese dann in einer Liste ablegt.

Nun möchte ich das ganze in eine Schleife packen, und bei jedem Schleifendurchlauf eine neue Liste erstellen. Jede Liste soll dann einen eigenen Namen erhalten.

Ist so etwas in Python möglich?

danke!
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dienstag 10. März 2009, 15:12

Dann willst du sicherlich eine Liste in einer Liste. Automatisch Variablen zu erzeugen ist in den meisten Fällen wenig sinnvoll.

Beachten musst du nichts, du kannst Listen behandeln wie jedes andere Objekt auch. Hier mal ein ganz einfaches Beispiel:

Code: Alles auswählen

list1 = []
for i in range(10):
    temp = []
    for j in range(5)
        temp.append(j)
    list1.append(temp)
Zugriff erhälst du dann mit "list1[2][3]".
Das Leben ist wie ein Tennisball.
Benutzeravatar
kbr
User
Beiträge: 919
Registriert: Mittwoch 15. Oktober 2008, 09:27

Dienstag 10. März 2009, 15:13

NedNederlander hat geschrieben:Ich habe eine kleien Funktion, die Werte berechnet, und diese dann in einer Liste ablegt.

Nun möchte ich das ganze in eine Schleife packen, und bei jedem Schleifendurchlauf eine neue Liste erstellen. Jede Liste soll dann einen eigenen Namen erhalten.

Ist so etwas in Python möglich?

danke!
Speichere die erstellten Listen in einem Dictionary mit den Namen als Keys.
NedNederlander
User
Beiträge: 10
Registriert: Mittwoch 4. März 2009, 13:25

Dienstag 10. März 2009, 15:26

danke erstmal für die vorschläge.

also am liebsten wärs mir, wenn ich einfach einzelne listen hätte.

mein programm besteht aus einzelnen modulen, und für die weiterverarbeitung der listen wärs viel komfortabler, wenn es wirklich einzelne listen sind.

mein problem ist eben die benennung der listen, da ja jede liste automatisch bei einem schleifendurchlauf einen namen bekommen muss.
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dienstag 10. März 2009, 16:46

Dann binde die Listen doch an Namen, wenn du sie brauchst.
Das Leben ist wie ein Tennisball.
NedNederlander
User
Beiträge: 10
Registriert: Mittwoch 4. März 2009, 13:25

Mittwoch 11. März 2009, 13:30

EyDu hat geschrieben:Dann binde die Listen doch an Namen, wenn du sie brauchst.
was meinst du mit "an Namen binden"?

das problem ist dass es mehrere tausend listen werden, das sollte alles automatisch ablaufen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mittwoch 11. März 2009, 13:34

NedNederlander hat geschrieben:
EyDu hat geschrieben:Dann binde die Listen doch an Namen, wenn du sie brauchst.
was meinst du mit "an Namen binden"?
Einfach das hier

Code: Alles auswählen

tmp = []
das problem ist dass es mehrere tausend listen werden, das sollte alles automatisch ablaufen.
Und Du kannst Dir einfache Namen bei 1000 (!) Listen wirklich merken, um darauf gezielt zuzugreifen?

Ich werde das Gefühl nicht los, dass Du da etwas mit einem falschen Ansatz lösen willst.

Was spricht denn gegen Listen in Listen oder ein Dict mit Listen?
NedNederlander
User
Beiträge: 10
Registriert: Mittwoch 4. März 2009, 13:25

Mittwoch 11. März 2009, 13:47

wie die listen heißen ist mir relativ wurst. kann gut sein dass mein ansatz der falsche ist, aber so stell ichs mir am einfachsten vor.

ich denke das mit dem dictonary würde gehen. da hab ich ein wenig rumprobiert, aber ich hab noch keine möglichkeit gefunden, wie ich da mittels einer schleife neue elemente zum dictonary hinzufüge.
10111
User
Beiträge: 22
Registriert: Samstag 21. Februar 2009, 01:34

Mittwoch 11. März 2009, 14:02

Hab mal schnell was mit einem Dictionary gebastelt. Sollte sich eigentlich selbst erklären.

Code: Alles auswählen

>>> d = {}
>>> for i in range(5):
...     temp = []
...     for j in range(i):
...         temp.append(j)
...     d['liste'+str(i)] = temp
... 
>>> d
{'liste1': [0], 'liste0': [], 'liste3': [0, 1, 2], 'liste2': [0, 1], 'liste4': [0, 1, 2, 3]}
>>> d['liste1'].append(9)
>>> d
{'liste1': [0, 9], 'liste0': [], 'liste3': [0, 1, 2], 'liste2': [0, 1], 'liste4': [0, 1, 2, 3]}
DasIch
User
Beiträge: 2465
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Mittwoch 11. März 2009, 15:15

Das mit dem dict ist grausam und unpythonisch. Eine Liste von Listen wäre deutlich eleganter.
10111
User
Beiträge: 22
Registriert: Samstag 21. Februar 2009, 01:34

Mittwoch 11. März 2009, 15:24

@DasIch: Du hast recht. Ich wollte nur zeigen, dass es mit einem dict geht. Der Sinn erschließt sich mir allerdings in diesem Fall selbst nicht. Ein Fall für ein dict wäre für mich z.B., wenn der Key eine Vokabel ist und in der zugehörigen Liste dann verschiedene Übersetzungen stehen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mittwoch 11. März 2009, 16:01

Das Problem ist doch, dass der OP uns nicht verrät, wie es zu den 1000enden Listen kommt und mit welchem Bezug er diese später wieder benötigt! Solange kann man außer generellen Wegen nichts genaues dazu sagen.
Antworten