Python中True不在目标列表时in成员运算为何返回True
为什么
True in [1,2,3]会返回True 这是Python语言的布尔类型设计和in运算符的判断逻辑共同导致的:
- 首先Python里的布尔类型
bool是整数类型int的子类,True对应的整数值就是1,False对应的整数值就是0,所以直接做相等判断时True == 1、False == 0的结果都是True。 - 其次
in成员运算符的判断规则是,遍历容器内的所有元素,只要存在任意一个元素和目标值满足==相等判断,就返回True。
你列表里的整数1刚好满足True == 1,所以最终运算结果为True。
如果需要严格判断列表里是否存在布尔类型的True(排除整数1的匹配),可以用身份判断is自行实现逻辑:
print(any(item is True for item in [1,2,3])) # 输出False
内容的提问来源于stack exchange,提问作者Mohit M
相关产品推荐
相关产品推荐

