在python中将一个列表连接到一个列表中

Join a list of lists together into one list in Python

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Flatten (an irregular) list of lists in Python

我有一个清单,由许多清单组成。下面是一个例子,

1
2
3
4
5
6
7
8
9
[
    [Obj, Obj, Obj, Obj],
    [Obj],
    [Obj],
    [
        [Obj,Obj],
        [Obj,Obj,Obj]
    ]
]

是否有一种方法将所有这些项作为一个列表连接在一起,因此输出将类似于

1
[Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj]


是的,有一种方法可以做到:

1
2
3
4
5
6
7
def flatten(lst):
    for elem in lst:
        if type(elem) in (tuple, list):
            for i in flatten(elem):
                yield i
        else:
            yield elem

请注意,这将创建一个生成器,因此如果需要列表,请将其包装在list()中:

1
flattenedList = list(flatten(nestedList))

从Monkeysage被偷,这里:

1
2
3
4
5
6
7
8
def iter_flatten(iterable):
  it = iter(iterable)
  for e in it:
    if isinstance(e, (list, tuple)):
      for f in iter_flatten(e):
        yield f
    else:
      yield e