Python – 提取最多列表

刚刚开始玩Python,所以请忍受我:)

假设包含嵌套列表的以下列表:

[[[[[1, 3, 4, 5]], [1, 3, 8]], [[1, 7, 8]]], [[[6, 7, 8]]], [9]]

以不同的表示:

[
    [
        [
            [
                [1, 3, 4, 5]
            ], 
            [1, 3, 8]
        ], 
        [
            [1, 7, 8]
        ]
    ], 
    [
        [
            [6, 7, 8]
        ]
    ], 
    [9]
]

您将如何提取这些内部列表,以便返回以下表单的结果:

[[1, 3, 4, 5], [1, 3, 8], [1, 7, 8], [6, 7, 8], [9]]

非常感谢!

编辑(谢谢@falsetru):

空的内部列表或混合类型列表将永远不会是输入的一部分。

这似乎起作用,假设没有“混合”列表,如[1,2,[3]]:

def get_inner(nested):
    if all(type(x) == list for x in nested):
        for x in nested:
            for y in get_inner(x):
                yield y
    else:
        yield nested

列表的输出(get_inner(nested_list)):

[[1, 3, 4, 5], [1, 3, 8], [1, 7, 8], [6, 7, 8], [9]]

或者甚至更短,没有发电机,使用sum组合结果列表:

def get_inner(nested):
    if all(type(x) == list for x in nested):
        return sum(map(get_inner, nested), [])
    return [nested]
http://stackoverflow.com/questions/19495848/python-extracting-inner-most-lists

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Python – 提取最多列表