【发布时间】:2010-11-07 19:13:04
【问题描述】:
伙计们。我试图找到一个问题的最优雅的解决方案,并想知道 python 是否有任何内置的东西来做我想做的事情。
我正在做的是这个。我有一个列表A,还有一个函数f,它接受一个项目并返回一个列表。我可以使用列表理解来转换 A 中的所有内容,就像这样;
[f(a) for a in A]
但这会返回一个列表列表;
[a1,a2,a3] => [[b11,b12],[b21,b22],[b31,b32]]
我真正想要的是得到扁平化的列表;
[b11,b12,b21,b22,b31,b32]
现在,其他语言都有它;它在函数式编程语言中传统上称为flatmap,而.Net 将其称为SelectMany。 python有类似的东西吗?有没有一种巧妙的方法可以将函数映射到列表并展平结果?
我要解决的实际问题是这样的;从目录列表开始,找到所有子目录。所以;
import os
dirs = ["c:\\usr", "c:\\temp"]
subs = [os.listdir(d) for d in dirs]
print subs
currentliy 给了我一个列表列表,但我真的想要一个列表。
【问题讨论】:
标签: functional-programming python list-comprehension