是否可以为列表理解中的每个项目返回2个(或更多)项目?
我想要的(例子):
[f(x), g(x) for x in range(n)]
应该回来 [f(0), g(0), f(1), g(1), ..., f(n-1), g(n-1)]
所以,要替换这段代码:
result = list()
for x in range(n):
    result.add(f(x))
    result.add(g(x))
家伙.我正试图找到一个问题最优雅的解决方案,并想知道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给了我一个列表列表,但我真的想要一个列表.