如何提取嵌套列表?

use*_*563 13 python list

重复:

让我们说我有一个嵌套列表的列表:

[["a","b","c"], ["d","e","f"], ["g","h","i","j"]...]
Run Code Online (Sandbox Code Playgroud)

将它转换为单个列表的最佳方法是什么?

["a", "b", "c", "d", "e"....]
Run Code Online (Sandbox Code Playgroud)

agf*_*agf 25

用途itertools.chain:

from itertools import chain

list(chain.from_iterable(list_of_lists))
Run Code Online (Sandbox Code Playgroud)

  • 你可以解释一下. (3认同)
  • @GLHF这是一个简单的问题(以及超过四年),并不需要比我链接的文档和我给出的例子更多的解释. (2认同)

Aus*_*all 16

itertools文档中有一个直接的例子(参见http://docs.python.org/library/itertools.html#recipes寻找flatten()),但它很简单:

>>> from itertools import chain
>>> list(chain(*x))
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
Run Code Online (Sandbox Code Playgroud)

或者,它可以在单个列表理解中非常容易地完成:

>>> x=[["a","b","c"], ["d","e","f"], ["g","h","i","j"]]
>>> [j for i in x for j in i]
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
Run Code Online (Sandbox Code Playgroud)

或者通过reduce():

>>> from operator import add
>>> reduce(add, x)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
Run Code Online (Sandbox Code Playgroud)

  • `chain.from_iterable(x)` 是 `chain(*x)` 的现代 Python 习语。 (2认同)