Ich würde gerne wissen, wie man Python-Funktion schreiben kann, die Generator flattern kann, die andere Generatoren oder Iteables liefert (die auch andere Generatoren / Iterables ergeben können ... möglicherweise unendlich).
Hier ist ein Beispiel:
gen(gen(1,2,3), gen(4,5,6), [7,8,9], [gen(10,11,12), gen(13,14,15)])
note: gen
- bedeutet Generatorobjekt, Inhalt zwischen Klammern nach gen
sind Daten, die Generator gen
ergeben.
Das erwartete Ergebnis nach "Abflachung":
gen(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
Es ist notwendig, dass die Funktion flatten auch den Generator zurückgibt! (Denn sonst wäre die vorhergehende Verwendung von Generatoren sinnlos).
Nur zu beachten, ich benutze Python 3.
Danke!
Der einfachste Weg ist eine rekursive Glättung. Angenommen, Sie möchten mit Ausnahme von Strings in alle Iterablen absteigen, können Sie Folgendes tun:
%Vor%Ab Python 3.3 können Sie auch
schreiben %Vor%Tags und Links python python-3.x generator