Python 如何从列表中删除元素,但保留'False'值`

Python 如何从列表中删除元素,但保留'False'值`,python,Python,我有以下列表:[0,1,无,2,False,1,0]我只想从中删除值0。但是我尝试过的所有方法都会从列表中删除False 请注意,值0可以位于列表中的任何位置 例如: 当0在数组中时: 数组。删除(0) 或 a=[x表示数组中的x,如果int(x)!=0] 结果[1,无,2,1] 因此,我正在寻找[1,无,2,False,1] 非常感谢您的帮助。False始终等于0,因此您不能仅在此处检查是否相等。相反,您可以这样做: a = [x for x in array if x is False

我有以下列表:
[0,1,无,2,False,1,0]
我只想从中删除值
0
。但是我尝试过的所有方法都会从列表中删除
False

请注意,值
0
可以位于列表中的任何位置

例如:

当0在数组中时:
数组。删除(0)

a=[x表示数组中的x,如果int(x)!=0]
结果
[1,无,2,1]

因此,我正在寻找
[1,无,2,False,1]


非常感谢您的帮助。

False
始终等于
0
,因此您不能仅在此处检查是否相等。相反,您可以这样做:

a = [x for x in array if x is False or x != 0]

您最初的尝试失败,因为
int(False)
的计算结果为0。

如果x不是0,请使用
@RafaelC,它依赖于不应该依赖的CPython的实现细节。相反,要保证
bool
对象是单例对象,并且可以通过identity@juanpa.arrivillaga为什么不应该依赖它?在将来的某个时候,
False为0
返回
True
?奥斯汀:是的,谢谢。我没有看到它。@RafaelC因为
0不是0
可能是
True
,int对象不能保证是单态的,事实上,它不是在小整数(-2到255)之外。它不会删除
False
项,因为
x为False
将在
x!=0
已评估检查。这是错误的。小整数缓存在CPython中是一个实现细节,不应该依赖它。在这种情况下,您应该依赖于语言保证,即布尔是单态的,并且可以使用identity进行可靠的比较。您应该完全删除不正确的答案。
[ x for x in array if x is False or x != 0]