Autor
|
Thema: Python: rekursive Include-Struktur auflösen? (990 mal gelesen)
|
HerrHansen Mitglied Dipl.-Ing.
Beiträge: 257 Registriert: 03.12.2005 Abaqus/CAE 6.3 bis 6.12
|
erstellt am: 23. Jul. 2010 14:28 <-- editieren / zitieren --> Unities abgeben:
Liebe Gemeinde, gegeben seien drei Listen:
Code:
Liste_1=[1,include_Liste_2,2,3] Liste_2=[11,include_Liste_3,22,include_Liste_3,33] Liste_3=[111,222,333]
Welchen Code würdet ihr hier anwenden, sodass es am Ende folgende Liste herauskommt?:
Code:
Liste=[1,11,111,222,333,22,111,222,333,33,2,3]
Worum es geht ist klar. Ich möchte mittels Python ein gegebenes Input-File zusammenbauen, das natürlich aus beliebig vielen Includes (auch unterverzweigt!) bestehen kann. Ich habe schon verschiedene Sachen probiert, aber irgendwie komme ich auf keinen grünen Zweig. Grüße HH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
femchen Mitglied wiss. MA
Beiträge: 166 Registriert: 25.06.2009
|
erstellt am: 23. Jul. 2010 14:44 <-- editieren / zitieren --> Unities abgeben: Nur für HerrHansen
Liste_1=[1,2,3] Liste_2=[11,22,33] Liste_3=[111,222,333] Liste=reduce(list.__add__,[Liste_1,Liste_2,Liste_3]) oder wenn die Reihenfolge relevant ist: Liste=reduce(list.__add__,[list(l) for l in zip(Liste_1,Liste_2,Liste_3)])
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HerrHansen Mitglied Dipl.-Ing.
Beiträge: 257 Registriert: 03.12.2005 Abaqus/CAE 6.3 bis 6.12
|
erstellt am: 23. Jul. 2010 16:19 <-- editieren / zitieren --> Unities abgeben:
Hallo femchen, ich stehe scheinbar auf dem Schlauch, weil ich nicht so richtig sehe, wie ich deinen Tipp auf mein Problem anwenden kann. An die Stellen, wo in den Listen irgendetwas mit "include" auftaucht, soll statt "include" der entsprechende Inhalt der referenzierten Liste eingesetzt werden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
femchen Mitglied wiss. MA
Beiträge: 166 Registriert: 25.06.2009
|
erstellt am: 24. Jul. 2010 23:46 <-- editieren / zitieren --> Unities abgeben: Nur für HerrHansen
Meinst Du so etwas: Liste_3=[111,222,333] Liste_2=[11,Liste_3,22,Liste_3,33] Liste_1=[1,Liste_2,2,3] print 'Liste_1', Liste_1 def platt(liste): L = [] for l in liste: if isinstance(l,list): L.extend(platt(l)) else: L.append(l) return L print 'Liste ', platt(Liste_1) Da gibt es unzählige Varianten zu: http://www.google.com/search?hl=&q=python+flatten+recursive+list&
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HerrHansen Mitglied Dipl.-Ing.
Beiträge: 257 Registriert: 03.12.2005 Abaqus/CAE 6.3 bis 6.12
|
erstellt am: 26. Jul. 2010 08:25 <-- editieren / zitieren --> Unities abgeben:
Super! Genau so etwas habe ich gesucht, vielen Dank! Mir war gar nicht klar, dass das ein Standard-Problem im Python ist. Ich wusste auch nicht so richtig, was ich ins google eingeben soll ("nested list" etc.). Us folgen. Gruß HH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|