关于python:从多类型嵌套列表中创建一个平面列表

Making a flat list out of a multi-type nested list

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

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

我有以下清单--

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

我要把它弄平--

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

为了做到这一点,我目前正在使用一个for循环和isinstance循环,循环数为#nests - 1

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

在这里可以找到一个类似的问题,它涉及到从嵌套列表中创建一个简单列表(仅限此):在Python中从列表列表中创建一个简单列表。


从webhelpers.misc.flatten拖运

1
2
3
4
5
6
7
8
9
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

编辑:这里的iterable测试非常简单,可以通过检查__iter__collections.Iterable抽象基类的实例来改进。

编辑2:@christophed是绝对正确的,这是一个dupe-so头到链接的问题。


试试这个:

1
2
3
4
5
6
7
8
def flat(mlist):
    result = []
    for i in mlist:
        if type(i) is list:
            result.extend(flat(i))
        else:
            result.append(i)
    return result