在列表理解中使用列表解包来展平嵌套列表

CIs*_*ies 3 python list-comprehension list nested-lists python-3.x

我看到了这个用于合并列表的解决方案,例如a = [1,2,3], b = [4,5,6]使用res = [*a, *b].

假设我有一个子列表列表,例如ls = [a,b]是否可以执行类似的操作res = [*i for i in ls]

该特定行自 以来无效SyntaxError: iterable unpacking cannot be used in comprehension。可以做类似的事情吗?

如果没有,我如何轻松创建一个包含子列表中所有元素的列表?

使用Python 3.5.3

cs9*_*s95 6

不,我不相信他们已经在理解中添加了对列表解包的支持。

作为替代方案,您可以使用itertools.chain

>>> from itertools import chain
>>> list(chain.from_iterable([a, b]))
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

或者,嵌套循环列表理解:

>>> [y for x in [a, b] for y in x]
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)