Schleife ueber verschachtelte Liste

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.
der_Gerhard
User
Beiträge: 14
Registriert: Mittwoch 21. September 2005, 09:06

Schleife ueber verschachtelte Liste

Beitragvon der_Gerhard » Freitag 14. Oktober 2005, 11:51

Hi *,

kennt jemand von euch eine Moeglichkeit auf alle Elemente einer verschachtelte Liste, die zur Laufzeit des Programms erstellt wird, im gleichen Programm zuzugreifen? Man braucht ja soviele Schleifen, wie Verschachtelungstiefen. Die einzige Moeglichkeit, die ich sehe, ist mir den Pythoncode fuer die Schleifen im Programm zu erzeugen und diese dann mit exec auszufuehren. Gibt es da eine einfachere Moeglichkeit?

Beispiel solch einer Liste:

Code: Alles auswählen

erg =[
              ['T1',
                    ['c1', 'd1'],
                    ['b1',
                         ['b2',
                              ['a3', '2'], ['b3', '3']
                         ],
                         ['a2', '4']
                     ],
                     ['a1', '5']
               ]
           ]
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 14. Oktober 2005, 12:13

Code: Alles auswählen

def rekursiv(data, deep=0):
    for i in data:
        if type(i)==list:
            rekursiv(i,deep+4)
        else:
            print " "*deep, i

rekursiv(erg)

Ergebnis:

Code: Alles auswählen

     T1
         c1
         d1
         b1
             b2
                 a3
                 2
                 b3
                 3
             a2
             4
         a1
         5

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
der_Gerhard
User
Beiträge: 14
Registriert: Mittwoch 21. September 2005, 09:06

Beitragvon der_Gerhard » Freitag 14. Oktober 2005, 12:21

Hi Jens,

jens hat geschrieben:

Code: Alles auswählen

def rekursiv(data, deep=0):
    for i in data:
        if type(i)==list:
            rekursiv(i,deep+4)
        else:
            print " "*deep, i

rekursiv(erg)

Ergebnis:

Code: Alles auswählen

     T1
         c1
         d1
         b1
             b2
                 a3
                 2
                 b3
                 3
             a2
             4
         a1
         5


Du bist ein Schatz *g*. Dank dir vielmals.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 14. Oktober 2005, 12:33

der_Gerhard hat geschrieben:Du bist ein Schatz *g*. Dank dir vielmals.

Und du wärst ein Schatz wenn du nicht alles unnötig zitieren würdest :lol:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
der_Gerhard
User
Beiträge: 14
Registriert: Mittwoch 21. September 2005, 09:06

Beitragvon der_Gerhard » Freitag 14. Oktober 2005, 12:37

jens hat geschrieben:Und du wärst ein Schatz wenn du nicht alles unnötig zitieren würdest :lol:


Ich gelobe Besserung.

Wer ist online?

Mitglieder in diesem Forum: pillmuncher