Python 逻辑运算
Python 的逻辑运算符包括 and, or, not,但位运算符 & (按位与运算符), | (按位或运算符) 有时也可以达到 and, or 的效果,有时,只有位运算符才能完成,如 pandas 中。下面进行总结,主要介绍 and, or 和 &, |.
基本介绍
离散数学中,假设 p 和 q 都是命题,那么
p 且 q: 当 p 和 q 都取值为真时结果才为真;
p 或 q: 当 p 和 q 都取值为假时结果才为假;
Python 逻辑运算
命题为逻辑变量时
当命题为逻辑变量时,即取值为 True, False 布尔值时,and, or 和 &, | 相对应的运算符用法基本一致,除了在pandas中。
也就是说,以下的表达式结果都为 True
1 | (True & True) == (True and True) |
但在 pandas 中,下面情况只能使用 & 和 |,注意不能使用 and 或 or,不然报错。
1 | import pandas as pd |
命题为数值变量时
当命题为数值变量时,即命题取值为整数值,如 2, 3 等,此时 & 和 | 是位运算符,如下结果都为 True
1 | 2 & 4 == 0 |
但 and 和 or 仍然表示逻辑运算,它把非 0 整数当成真,0 或 False 当假,如下结果都为 True
1 | (0 and 3) == 0 |
命题中既有逻辑变量又有数值变量
当左右命题中既有逻辑变量又有数值变量时,逻辑变量自动类型转化为数值变量的 0 或 1,False 转化为 0, True 转化为 1,如下结果都为 True,但注意因为惰性求值,结果可能是第一个命题的类型
1 | (False and 3) == False |
也可以这样理解:
- 对于 and 当第一个命题为假时返回第一个命题值;当第一个命题为真时返回第二个命题值;
- 对于 or 当第一个命题为真时返回第一个命题值;当第一个命题为假时返回第二个命题值。
注意运算优先级
因为逻辑运算的优先级比较低,因此建议对命题加上小括号,这样逻辑上比较清晰,不易出现意想不到的结果,如
1 | (0 and 3) == 0 |
参考链接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 J. Xu!
评论