Python filter()逻辑错误

Python filter()逻辑错误,python,python-3.x,Python,Python 3.x,我想知道为什么在使用filter()函数时这个逻辑不起作用: def remove_negatives(list_1): return list(filter(lambda x: x < 0 == False, list_1)) def删除负片(列表1): 返回列表(过滤器(lambda x:x0?啊,你改了@jonrsharpe我知道这是可行的,而且x>=0,但我只是好奇为什么我提到的方法没有返回我期望的输出,是什么导致输出没有返回预期的结果,而是返回所有的负数。所以你说的是,

我想知道为什么在使用filter()函数时这个逻辑不起作用:

def remove_negatives(list_1):
    return list(filter(lambda x: x < 0 == False, list_1))
def删除负片(列表1):
返回列表(过滤器(lambda x:x<0==False,列表_1))
我试图完成的是从给定列表中删除所有负数,现在…我不明白的是,为什么不返回所有负数都已删除的新列表,而是返回所有负数的列表。我认为基本上它说的是,如果x<0返回值是假的,那么基本上说如果x不小于0,返回值,但是为什么不起作用呢?我做错什么了吗?哦,我也知道如何实现这一点。我有两种方法可以实现这一点,但我只是好奇是什么导致这种特殊的逻辑失败。

你正在使用

x < 0 == False


为什么不干脆
x>=0
?或者更确切地说,
x>0
?啊,你改了@jonrsharpe我知道这是可行的,而且x>=0,但我只是好奇为什么我提到的方法没有返回我期望的输出,是什么导致输出没有返回预期的结果,而是返回所有的负数。所以你说的是,在这个例子中,imageine x是-3:函数运行时,它说:x<0(对)然后,因为它首先运行,所以它没有到达比较,只是返回它?否-逻辑上是负数,0为假,正数为真。首先,你做的是0==False,计算结果为真,然后询问的是负数小于真,这为真。因此,对于负数返回真,并用解释更新n、 如果这回答了您的问题,请将其标记为。谢谢“首先,计算0==False”-这是错误的。请查看文档。
x<0==False
是一个链式比较,计算结果为
(x<0)和(0==False)
“负数和0在逻辑上与False相同”-这也是错误的。只有
0
是错误的值。请使用任何负数检查它,如
print(bool(-1))
(x<0) == False
(x>0)