将列表列表一起加入Python中的一个列表中

时间:2010-06-15 14:40:58

标签: python list join

  

可能重复:
  Flatten (an irregular) list of lists in Python

我有一个包含许多列表的列表。这是一个例子,

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

有没有办法将所有这些项目合并为一个列表,因此输出将类似于

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

2 个答案:

答案 0 :(得分:7)

是的,这是one way to do it

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 :(得分:1)

从MonkeySage中偷走,here

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