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]