python - 如何将嵌套列表转换为所有单个子列表的列表

Ame*_*eyA 0 python list nested-lists python-3.4

我有一个这样的嵌套列表:

l = [['A', ['A', 'B', ['A', 'B', 'C'], ['A', 'B', 'D']], ['A', 'D', ['A', 'D', 'A']], ['A', 'C', ['A', 'C', 'B'], ['A', 'C', 'A']], ['A', 'A', ['A', 'A', 'D']]]]
Run Code Online (Sandbox Code Playgroud)

我想将它分成所有单个列表的列表,如下所示:

k = [['A'], ['A', 'B'], ['A', 'B', 'C'], ['A', 'B', 'D'], ['A', 'D'], ['A', 'D', 'A'], ['A', 'C'], ['A', 'C', 'B'], ['A', 'C', 'A'], ['A', 'A'], ['A', 'A', 'D']]
Run Code Online (Sandbox Code Playgroud)

我通过创建以下函数尝试了这个:

def un_nest(l):
    k=[]
    for item in l:
        if type(item) is list:
            un_nest(item)
        else:
            k+=[item]
    print(k)
Run Code Online (Sandbox Code Playgroud)

我得到了所需的输出,但我不知道如何将其转换为列表.我得到的输出是:

['A', 'B', 'C']
['A', 'B', 'D']
['A', 'B']
['A', 'D', 'A']
['A', 'D']
['A', 'C', 'B']
['A', 'C', 'A']
['A', 'C']
['A', 'A', 'D']
['A', 'A']
['A']
[]
Run Code Online (Sandbox Code Playgroud)

这是在shell中输出的,(我知道这是因为打印功能),但我不知道如何从中获取列表.因为我需要做一些操作所需的最终输出列表.我正在使用Python 3.4.1任何提示都会有所帮助.提前致谢

编辑:它更像我想要的,将所有字符串和子列表从'l'分隔到另一个列表.

rya*_*son 8

您可以在当前嵌套级别返回一个列表作为结果,并使用extend将嵌套结果连接在一起.

l = [['A', ['A', 'B', ['A', 'B', 'C'], ['A', 'B', 'D']], ['A', 'D', ['A', 'D', 'A']], ['A', 'C', ['A', 'C', 'B'], ['A', 'C', 'A']], ['A', 'A', ['A', 'A', 'D']]]]

def un_nest(l):
    r = []
    k = []
    for item in l:
        if type(item) is list:
            r.extend(un_nest(item))
        else:
            k.append(item)
    if k:
        r.insert(0, k)
    return r

print(un_nest(l))
Run Code Online (Sandbox Code Playgroud)

输出:

[['A'], ['A', 'B'], ['A', 'B', 'C'], ['A', 'B', 'D'], ['A', 'D'], ['A', 'D', 'A'], ['A', 'C'], ['A', 'C', 'B'], ['A', 'C', 'A'], ['A', 'A'], ['A', 'A', 'D']]
Run Code Online (Sandbox Code Playgroud)