在Python中将多个列表合并为一个列表

4 投票
2 回答
9402 浏览
提问于 2025-04-16 00:00

我有一个列表,这个列表里面包含了很多其他的列表。比如说,下面是一个例子:

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

有没有办法把这些小列表里的所有东西合并成一个大列表,这样输出的结果就会像这样:

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

2 个回答

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
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))

撰写回答