Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Python Teillisten glätten » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Python Teillisten glätten
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Dr.Java Dr.Java ist männlich
Foren As


images/avatars/avatar-71.jpg

Dabei seit: 21.03.2016
Beiträge: 99

Python Teillisten glätten Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi. Ich habe hier ein rekursives Programm das Listen in Python glättet,die Liste aber ansonsten unverändert lässt.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
def flatten(lst):
    return sum( ([x] if not isinstance(x, list) else flatten(x)
		     for x in lst), [] )

>>> liste= [3,4,[[5]]] 
>>> test= [[[1, 2, liste], (6, [7]), 8], 9, False] 
>>> flatten(test)
[1, 2, 3, 4, 5, (6, [7]), 8, 9, False] 
>>> test
[[[1, 2, [3, 4, [[5]]]], (6, [7]), 8], 9, False] 
>>> liste
[3, 4, [[5]]] 

Und jetzt möchte ich ein rekursives Programm erstellen das auch die Teillisten in der Liste glättet.
code:
1:
2:
3:
4:
5:
6:
7:
8:
>>> liste= [3,4,[[5]]] 
>>> test= [[[1, 2, egg], (6, [7]), 8], 9, False] 
>>> flatten_in_place(test) 
>>> test
[1, 2, 3, 4, 5, (6, [7]), 8, 9, False]
>>> liste
[3, 4, 5]

Ich habe schon einige Beispielfunktionen gefunden und auch schon ein wenig rumexpirimentiert,aber entweder wird die Liste falsch geglättet oder es kommt eine Fehlermeldung. Ich wollte deshalb fragen was hier der richtige Ansatz wäre? Die erste Funktion umschreiben oder doch lieber was komplett neues nehmen?

Wäre dankbar für jegliche Hilfe

lg

__________________
Zitat:
"Ich glaube, es gibt einen weltweiten Bedarf an vielleicht fünf Computern."
-Thomas Watson

24.11.2016 09:32 Dr.Java ist offline Beiträge von Dr.Java suchen Nehmen Sie Dr.Java in Ihre Freundesliste auf
Dr.Java Dr.Java ist männlich
Foren As


images/avatars/avatar-71.jpg

Dabei seit: 21.03.2016
Beiträge: 99

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ok bin schon ein Stück weitergekommen. Ich hab einige Programme gefunden,die die Liste in gewünschter Form herausgeben,allerdings nur wenn ich es eingebe,nicht so wie gehofft dauerhaft konvertiert. Kann mir jemand vielleicht helfen das zu verbessern?

code:
1:
2:
3:
4:
5:
def flatten_in_place(lst):
    if isinstance(lst[0], list):
        return flatten(lst[0]) + flatten(lst[1:])
    return lst[:1] + flatten(lst[1:])


lg

__________________
Zitat:
"Ich glaube, es gibt einen weltweiten Bedarf an vielleicht fünf Computern."
-Thomas Watson

25.11.2016 15:25 Dr.Java ist offline Beiträge von Dr.Java suchen Nehmen Sie Dr.Java in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Python Teillisten glätten