我得到了一个包含整数和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,因为它不是没有
答案 0 :(得分:1)
您可以通过显式理解而不是all
来获得所需的内容,因为all
会测试False
的值,并且0
和None
都等于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