使用recusivity-- python删除4比例列表中的无值

时间:2018-05-16 21:56:20

标签: python list

我是平台的新手,我正在尝试为python中使用复杂列表的程序创建一个有用的函数,(更精确的单词列表列表)。 整个问题是没有值可以在这个“4比例列表”的每个级别。

但是,我试过这个:

def WipeOutNone(List):
    for i in range(len(List)):
        if List[i]==None:
            del List[i]
        else:
            if len(List[i])>1:
                WipeOutNone(List[i])
    return List

但它不起作用。

你知道如何修复它,或者只是找另一种方法来做它吗?

欢迎任何答案:)

1 个答案:

答案 0 :(得分:0)

有一个关于你的用例的例子很好,

但如果我理解正确,请考虑一个简单的2嵌套列表,其中None出现在父级别或子级别

在这种情况下,您可以使用递归

删除None
In [83]: a = [1,2,3,None]

In [84]: b = [a, None, a]

In [85]: def rem_none(l):
    ...:     if type(l) != list:
    ...:         return
    ...:     l[:] = [i for i in l if i is not None]
    ...:     for e in l:
    ...:        rem_none(e)
    ...:

In [86]: rem_none(b)

In [87]: b
Out[87]: [[1, 2, 3], [1, 2, 3]]

这是一种超级简单的方法,您可以使用filter

执行更强大的功能