Skip to main content
 首页 » 编程设计

python之链式 AND 条件给出不明确的结果

2025年05月04日12freeliver54

谁能解释一下?

a = [2,3,4] 
b = [5,6,8,9] 
 
print(len(a) > 0) 
print(len(b) > 0) 
print((len(a) > 0) & len(b) > 0)) 

输出:

True 
True 
False 

最后的 print 语句不应该返回 True 吗?如果我现在将其重写为:

print((len(a) > 0) & (len(b) > 0)) 

(注意第二个 AND 条件周围的括号),我得到的输出为 True。

这让我很困惑。为什么在括号中包含第二个 AND 条件会改变结果?

请您参考如下方法:

& 不是逻辑“与”运算符。它是按位“与”运算符,因此,它具有适合按位运算而不是逻辑运算的优先级。该优先级高于比较的优先级,因此表达式被解析为

((len(a) > 0) & len(b)) > 0 

如果您使用逻辑 and,优先级将按您期望的方式工作:

print(len(a) > 0 and len(b) > 0)