如何从无关的嵌套中清除Python列表?

如何从无关的嵌套中清除Python列表?,python,arrays,list,recursion,tree,Python,Arrays,List,Recursion,Tree,我正在做一个程序,在这个程序中,我们有一个包含大量无关嵌套的列表,我们希望简化它 例如,一个输入可以是 [[['A', [[[[[[[[[['B', [[[[[[[[[['C', [[[[[[[[[['D']], [['E']], [['F', [[[[[[[[[['G']]]]]]]]]]]], [['H']], [['I']], [['J']]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] 它应该输出 但是,在运行我的代码后,它什么也不做,并返回[] 这是我的密码: de

我正在做一个程序,在这个程序中,我们有一个包含大量无关嵌套的列表,我们希望简化它

例如,一个输入可以是

[[['A', [[[[[[[[[['B', [[[[[[[[[['C', [[[[[[[[[['D']], [['E']], [['F', [[[[[[[[[['G']]]]]]]]]]]], [['H']], [['I']], [['J']]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
它应该输出

但是,在运行我的代码后,它什么也不做,并返回
[]

这是我的密码:

def clean_列表(列表2):
对于清单2中的项目:
如果isinstance(项目,列表)和len(列表2)==1:#这是一个无关的列表!
项目=清洁清单(项目)
list2.append(项[0].copy())
列表2.删除(项目)
返回列表2

您可以使用一个函数,递归地取消给定列表中每个项目的嵌套,但如果列表只有一个项目且该项目是列表,则将子列表传递给递归调用:

def denest(lst):
    if isinstance(lst, list):
        if len(lst) == 1 and isinstance(lst[0], list):
            return denest(lst[0])
        return [denest(i) for i in lst]
    return lst
因此,给定存储在变量
lst
中的示例列表,
denest(lst)
将返回:

['A', ['B', ['C', [['D'], ['E'], ['F', ['G']], ['H'], ['I'], ['J']]]]]

这个问题被问了几次。看看@shaikmoeed的可能复制品不,这不是复制品。我不想让它扁平化,只是任意嵌套被移除了,我正在编写完全相同的代码(令牌对令牌,只是有一个更好的命名;-)。。。很好,你比一大群“坏复制关闭”警察还快:-)