我有一个清单A
,和一个函数f
其中需要一个项目A
并返回一个列表。我可以使用列表理解来转换所有内容A
like [f(a) for a in A]
,但这会返回一个列表列表。假设我的输入是[a1,a2,a3]
, 导致[[b11,b12],[b21,b22],[b31,b32]]
.
我怎样才能得到压扁的 list [b11,b12,b21,b22,b31,b32]
反而?换句话说,在Python中,我怎样才能得到传统上所谓的flatmap
在函数式编程语言中,或者SelectMany
在.NET 中?
(在实际代码中,A
是一个目录列表,并且f
is os.listdir
。我想建立一个子目录的平面列表。)
See also: How do I make a flat list out of a list of lists? https://stackoverflow.com/questions/952914 for the more general problem of flattening a list of lists after it's been created.
您可以在单个列表理解中进行嵌套迭代:
[filename for path in dirs for filename in os.listdir(path)]
这相当于(至少在功能上):
filenames = []
for path in dirs:
for filename in os.listdir(path):
filenames.append(filename)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)