Python Teillisten glätten

Neue Frage »

Auf diesen Beitrag antworten »
Dr.Java Python Teillisten glätten

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
 
Auf diesen Beitrag antworten »
Dr.Java

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
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »