les gars. J'essaie de trouver la solution la plus élégante à un problème et je me demandais si python a rien construit pour ce que je suis en train de faire.
Ce que je fais, c'est ça. J'ai une liste, A
, et j'ai une fonction f
qui prend un élément et renvoie une liste. Je peux utiliser une liste de compréhension de tout convertir en A
comme;
[f(a) for a in A]
Mais ce retour une liste de listes;
[a1,a2,a3] => [[b11,b12],[b21,b22],[b31,b32]]
Ce que je veux vraiment, c'est obtenir la liste aplatie;
[b11,b12,b21,b22,b31,b32]
Maintenant, d'autres langues; il est appelé traditionnellement" flatmap
dans les langages de programmation fonctionnelle, et .Net appelle SelectMany
. Python ont quelque chose de semblable? Est-il un moyen sympa de carte d'une fonction sur une liste et aplatir le résultat?
Le réel problème, je vais essayer de résoudre est-ce, en commençant par une liste de répertoires, de trouver tous les sous-répertoires. de la sorte;
import os
dirs = ["c:\\usr", "c:\\temp"]
subs = [os.listdir(d) for d in dirs]
print subs
currentliy me donne une liste de listes, mais je veux vraiment une liste.