Jungs. Ich versuche, die eleganteste Lösung für ein Problem zu finden, und frage mich, ob in Python etwas für das integriert ist, was ich versuche.
Was ich tue ist das. Ich habe eine Liste A
und eine Funktion, f
die ein Element aufnimmt und eine Liste zurückgibt. Ich kann ein Listenverständnis verwenden, um alles A
so umzuwandeln .
[f(a) for a in A]
Dies gibt jedoch eine Liste von Listen zurück.
[a1,a2,a3] => [[b11,b12],[b21,b22],[b31,b32]]
Was ich wirklich will, ist, die abgeflachte Liste zu bekommen;
[b11,b12,b21,b22,b31,b32]
Jetzt haben es andere Sprachen; Es wird traditionell flatmap
in funktionalen Programmiersprachen aufgerufen , und .Net nennt es SelectMany
. Hat Python etwas Ähnliches? Gibt es eine gute Möglichkeit, eine Funktion einer Liste zuzuordnen und das Ergebnis zu reduzieren?
Das eigentliche Problem, das ich zu lösen versuche, ist das folgende; Beginnen Sie mit einer Liste von Verzeichnissen und suchen Sie alle Unterverzeichnisse. damit;
import os
dirs = ["c:\\usr", "c:\\temp"]
subs = [os.listdir(d) for d in dirs]
print subs
Aktuell gibt mir eine Liste von Listen, aber ich möchte wirklich eine Liste.