按过滤器删除无,但不删除0

时间:2019-06-07 09:51:13

标签: python filter nonetype

我得到了一个包含整数和None的列表的列表。 我只想过滤掉无。

[int(all(sub)) for sub in zip(*lists_for_filtering)]

这将删除无,但也将删除0(整数)。 我想以保持0(整数)的方式对其进行修改

结果是一个列表列表[1,0,1,0,1,0,1,0]->没有结果为0,但是0结果为0->这应该导致1,因为它不是没有

2 个答案:

答案 0 :(得分:1)

您可以通过显式理解而不是all来获得所需的内容,因为all会测试False的值,并且0None都等于False在布尔上下文中:

[int(all((a is not None for a in sub))) for sub in zip(*lists_for_filtering)]

答案 1 :(得分:0)

如果我理解正确,那么您的问题是all()函数,该函数将0和None都评估为False。编写自己的布尔过滤器,该过滤器仅将None评估为False,然后重试。 做这样的事情:

def noNone(seq):
    if all(map(lambda x: x != None, seq)):
        return True
    else:
        return False