相关疑难解决方法(0)

如何从列表列表中制作一个平面列表?

我想知道是否有一条快捷方式可以在Python列表中列出一个简单的列表.

我可以在for循环中做到这一点,但也许有一些很酷的"单行"?我用reduce尝试了,但是我收到了一个错误.

l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
reduce(lambda x, y: x.extend(y), l)
Run Code Online (Sandbox Code Playgroud)

错误信息

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
AttributeError: 'NoneType' object has no attribute 'extend'
Run Code Online (Sandbox Code Playgroud)

python list flatten multidimensional-array

2950
推荐指数
29
解决办法
184万
查看次数

python list comprehensions; 压缩列表列表?

家伙.我正试图找到一个问题最优雅的解决方案,并想知道python是否内置了我正在尝试做的事情.

我正在做的是这个.我有一个列表,A我有一个函数f,它接受一个项目并返回一个列表.我可以使用列表理解来转换所有内容A;

[f(a) for a in A]
Run Code Online (Sandbox Code Playgroud)

但这会返回列表清单;

[a1,a2,a3] => [[b11,b12],[b21,b22],[b31,b32]]
Run Code Online (Sandbox Code Playgroud)

我真正想要的是得到扁平化的清单;

[b11,b12,b21,b22,b31,b32]
Run Code Online (Sandbox Code Playgroud)

现在,其他语言都有它; 它传统上称为flatmap函数式编程语言,而.Net称之为SelectMany.python有类似的东西吗?有没有一种巧妙的方法来映射列表上的函数并使结果变平?

我试图解决的实际问题是这个; 从目录列表开始,找到所有子目录.所以;

import os
dirs = ["c:\\usr", "c:\\temp"]
subs = [os.listdir(d) for d in dirs]
print subs
Run Code Online (Sandbox Code Playgroud)

currentliy给了我一个列表列表,但我真的想要一个列表.

python functional-programming list-comprehension

67
推荐指数
9
解决办法
5万
查看次数