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

python - how to convert a nested list to a list of all individual sub-lists

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

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']]]]

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

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']]

我通过创建以下函数进行了尝试:

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

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

['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']
[]

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

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

您可以return一个列表作为当前嵌套级别的结果,并使用扩展将嵌套结果连接在一起。

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))

输出:

[['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']]