Python中any()函数真值识别异常求助:为何判断结果不符预期?
你误解了
any()函数的返回值! 哦,我完全懂你为啥困惑——这是刚接触any()函数时很容易踩的坑!
问题出在你对any()的作用理解错了:any()返回的是一个布尔值(True/False),而不是列表中匹配的元素。它的逻辑是:遍历传入的可迭代对象,只要其中有一个元素是“真值”(非空、非零、非False等),就返回True;如果所有元素都是假值,才返回False。
回到你的代码:
local = [(0, 4), (0, 5), (1, 4), (0, 3)] start = (0,5) print(any(local)) # 输出True,因为所有元组都是非空的,都是真值 print(start == any(local)) # 相当于(0,5) == True,当然返回False!
正确的写法有两种:
- 最简洁的方式:用
in运算符,这是检查元素是否在列表里的标准做法:start in local # 返回True,完美符合你的需求 - 如果一定要用
any()(比如需要更复杂的匹配逻辑),要给any()传一个生成器表达式,明确检查每个元素是否等于start:any(x == start for x in local) # 遍历每个x,只要有一个x等于start就返回True
这样就能得到你预期的结果啦!
内容的提问来源于stack exchange,提问作者TheQuant
相关产品推荐
相关产品推荐

