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

时间:2015-01-05 12:32:40

标签: 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']]]]

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

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'分离到另一个列表。

1 个答案:

答案 0 :(得分: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))

输出:

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