<p>伙计们。我试图找到一个问题的最优雅的解决方案,并想知道python是否有任何内置的东西来解决我正在尝试的问题。</p>
<p>我要做的就是这个。我有一个列表,<code>A</code>,还有一个函数<code>f</code>,它接受一个项并返回一个列表。我可以使用列表理解来转换<code>A</code>中的所有内容,就像这样</p>
<pre><code>[f(a) for a in A]
</code></pre>
<p>但这会返回一个列表列表</p>
<pre><code>[a1,a2,a3] => [[b11,b12],[b21,b22],[b31,b32]]
</code></pre>
<p>我真正想要的是得到扁平化的清单</p>
<pre><code>[b11,b12,b21,b22,b31,b32]
</code></pre>
<p>现在,其他语言也有了它;在函数式编程语言中,它传统上被称为<code>flatmap</code>,.Net将其称为<code>SelectMany</code>。python有类似的东西吗?有没有一种简洁的方法可以将一个函数映射到一个列表上并将结果展平?</p>
<p><em>我要解决的实际问题是:从目录列表开始,查找所有子目录。所以;</em></p>
<pre><code>import os
dirs = ["c:\\usr", "c:\\temp"]
subs = [os.listdir(d) for d in dirs]
print subs
</code></pre>
<p><em>currently给了我一个列表,但我真的想要一个列表。</em></p>