Python中in运算符逻辑疑问:JS开发者转ML学习的困惑
为什么
True in [1,2,3,4]返回True? 这是Python布尔类型的特性导致的,并非in运算符的异常行为:
- Python里的
bool类型是int的子类,True本质上等价于整数1,False等价于整数0。 - 当使用
in运算符检查元素是否存在时,Python会逐个用==判断列表元素和目标值是否相等,而非检查是否为同一个对象(那是is的作用)。
对应你的例子:
- 对于
this_list = [1,2,3,4],True == 1的结果为True,所以in会判定列表中存在匹配元素,返回True。 - 对于
["bananas", "apples"],列表里的字符串和True(即1)用==比较时均不相等,因此返回False。
你可以用以下代码验证这个逻辑:
print(True == 1) # 输出: True print(False == 0) # 输出: True print(isinstance(True, int)) # 输出: True
如果需要严格检查布尔值True是否在列表中(排除整数1的干扰),可以结合类型判断:
this_list = [1,2,3,4, True] any(isinstance(item, bool) and item is True for item in this_list) # 输出: True
内容的提问来源于stack exchange,提问作者Nazar Hotko
相关产品推荐
相关产品推荐

