在Python中将列表的列表连接成一个列表

4
我有一个由多个列表组成的列表。下面是一个例子:
[
    [Obj, Obj, Obj, Obj],
    [Obj],
    [Obj],
    [
        [Obj,Obj],
        [Obj,Obj,Obj]
    ]
]

有没有一种方法可以将所有这些项目合并为一个列表,使输出结果类似于
[Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj]
2个回答

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()包装它:
flattenedList = list(flatten(nestedList))

1

从MonkeySage那里偷来的,在这里

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接