从多类型嵌套列表中创建一个平面列表

时间:2011-06-27 22:47:54

标签: python

  

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

我有以下列表 -

[1,[2,3],4,[5,[6,7]]]

我需要让它平坦 -

[1,2,3,4,5,6,7]

要执行此操作,我目前正在使用for循环isinstance,循环次数为#nests - 1

使嵌套列表平坦的最简单方法是什么?谢谢。

可以在此处找到类似的问题,该问题涉及从嵌套列表中制作平面列表(仅限):Making a flat list out of list of lists in Python

2 个答案:

答案 0 :(得分:8)

来自webhelpers.misc.flatten

def flatten(iterable):
    """Recursively iterate lists and tuples.
    """
    for elm in iterable:
        if isinstance(elm, (list, tuple)):
            for relm in flatten(elm):
                yield relm
        else:
            yield elm

编辑:此处的可迭代测试非常幼稚,可以通过检查是否存在__iter__collections.Iterable抽象基类的实例来改进。

编辑2: @ChristopheD绝对正确,这是一个骗局,所以请转到相关问题。

答案 1 :(得分:1)

试试这个:

def flat(mlist):
    result = []
    for i in mlist:
        if type(i) is list:
            result.extend(flat(i))
        else:
            result.append(i)
    return result