我有一个愚蠢的问题。 可以说我有一个不同值的列表。像这样:区分假和0
[1,2,3,'b', None, False, True, 7.0]
我想遍历它并检查每个元素是否不在某些禁止值列表中。例如,此列表是[0,0.0]
。
而当我检查是否假[0,0.0
]我得到True
。据我所知,Python在这里将False
转换为0
。 但我怎么能避免它,并使此检查正确 - False
值不在[0,0.0]
名单?
我有一个愚蠢的问题。 可以说我有一个不同值的列表。像这样:区分假和0
[1,2,3,'b', None, False, True, 7.0]
我想遍历它并检查每个元素是否不在某些禁止值列表中。例如,此列表是[0,0.0]
。
而当我检查是否假[0,0.0
]我得到True
。据我所知,Python在这里将False
转换为0
。 但我怎么能避免它,并使此检查正确 - False
值不在[0,0.0]
名单?
要区分False
和0
,您可以使用is
来比较它们。 False
是一个单例值,并且始终指向同一个对象。要比较所有列表中的项目,以确保他们不False
,尝试:
all(x is not False for x in a_list)
BTW,Python不拈东西:布尔是整数的一个子类,并False
简直是等于0
,不需要转换。
比较时,您希望使用is
而不是==
。
y = 0
print y == False # True
print y is False # False
x = False
print x == False # True
print x is False # True
很好的建议,但原始代码不包含'==',它包含'in'。这不是对这个问题的真实答案。 –
所以我们得到的教训是,如果你真的需要知道'False'和'0'之间的区别,那么对于两个逻辑的比较,你应该使用'is'和'is'而不是'==' – wander95
@ wander95是。 “真”和“1”。大多数时候你不需要区分。 'in'使用'==',并且没有办法改变它。 –
列表将被评估为True。检查[这个问题](http://stackoverflow.com/questions/1452489/evaluation-of-boolean-expressions-in-python) –
你应该单独检查值,你的方法将最多只能告诉你某些失败,但不会告诉你什么,这将是你或你的用户下一个问题。 – DejaVuSansMono
您可能想要重新考虑导致包含“False”和“0”值的列表的决定,这些值需要区别对待。 – chepner