使用递归python删除4比例列表中的“无”值

2024-04-25 13:12:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我是这个平台的新手,我正在尝试用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

但它不起作用。你知道吗

你知道怎么解决它吗,或者只是找到另一种方法?你知道吗

欢迎回答:)


Tags: 函数in程序列表forlenifdef
1条回答
网友
1楼 · 发布于 2024-04-25 13:12:24

如果有一个关于你的用例的例子就好了

但如果我理解正确,请考虑一个简单的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做更强大的事情

相关问题 更多 >