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

Informatiker Board » Themengebiete » Praktische Informatik » Python Teillisten glätten » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 2 Beiträge
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
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