我想知道是否有一条快捷方式可以在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) 我有一个嵌套列表与列表和数字混合.
nested = [[1, 2, 3], [4, 5, 6], [7, 8], [9], 10, 11]
Run Code Online (Sandbox Code Playgroud)
嵌套列表只包含数字,它们永远不会包含更多列表.
是否可以编写列表推导来从'嵌套'列表中创建新列表,产生以下输出?
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Run Code Online (Sandbox Code Playgroud)
这是我的尝试(代码不起作用)
[num if isinstance(item, list) for num in item else item for item in nested]
Run Code Online (Sandbox Code Playgroud) 这仅用于概念的自学习,可能没有实际用途
我的问题是
我可以只使用递归函数和列表推导来展平未知级别的嵌套列表吗?
如果1是可能的,我可以只使用list comprehension + lambda函数来达到同样的目的吗?
到目前为止,这一切我都可以得到,但似乎无法正常工作.
l=[1,[2,3],[4,5,[6,7,8,9]]] # assuming unknown level of nesting
def fun_d(x):
return [fun_d(e) if isinstance(e,list) else e for e in x]
fun_d(l)
Out[25]: [1, [2, 3], [4, 5, [6, 7, 8, 9]]]
Run Code Online (Sandbox Code Playgroud)