繁体   English   中英

Python从嵌套列表中提取所有子列表

[英]Python extract all sublists from a nested list

我有一个嵌套列表,列表本身就是元素。 我想找到所有子列表并将它们展平为一个列表:

例如:

[[a], [b,[c,[d,e]]], [f,g]]

我想要一个包含原始列表中所有现有子列表(展平)的列表,即:

[[a], [b,c,d,e], [c,d,e], [d,e], [f,g]]

我使用了递归函数,但问题是我再次得到嵌套的子列表,这不是我想要的。 我的问题也不是关于平整不规则列表。

我们将使用一个辅助函数,该函数返回嵌套列表和所有子列表的扁平形式:

def flattened_list_and_sublists(l):
    # First return value is l, flattened.
    # Second return value is a list of flattened forms of all nested sublists
    # of l.

    flattened = []
    flattened_sublists = []

    for i in l:
        if isinstance(i, list):
            i_flattened, i_flattened_sublists = flattened_list_and_sublists(i)
            flattened += i_flattened
            flattened_sublists.append(i_flattened)
            flattened_sublists += i_flattened_sublists
        else:
            flattened.append(i)
    return flattened, flattened_sublists

然后,您要的函数返回上述函数的第二个返回值:

def all_flattened_sublists(l):
    l_flattened, l_sublists_flattened = flattened_list_and_sublists(l)
    return l_sublists_flattened

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM