使用列表解析中的列表解包来展平嵌套列表

时间:2017-08-22 11:35:58

标签: python python-3.x list list-comprehension nested-lists

我看到了使用a = [1,2,3], b = [4,5,6]合并res = [*a, *b]等列表的this解决方案。

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

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

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

使用python 3.5.3

1 个答案:

答案 0 :(得分:3)

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

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

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

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

>>> [y for x in [a, b] for y in x]
[1, 2, 3, 4, 5, 6]