python - 如何解释整数的布尔运算?
问题描述
假设我们要对两个整数(例如 5 和 7)执行“按位与”运算。结果应该是 5 是有道理的,因为 111 和 101 的并集应该返回 101,这当然是我得到的Python:
5 & 7
Out: 5
我虽然那个布尔值and
不应该适用于非布尔值,但令我惊讶的是:
5 and 7
Out: 7
1.5 and 1.7
Out: 1.7
[1,2,3] and [4,5]
Out: [4, 5]
现在我很困惑。这出于某种原因有效,但这意味着什么?这些价值是如何产生的?
解决方案
如果Pythonand
计算结果为 false,则返回其左操作数,否则返回其右操作数。
如果Python 的or
值为真,则返回其左操作数,否则返回其右操作数。
请注意,对于布尔操作数,这会产生正确的真值表。他们还保证在选择左边的操作数时根本不会评估右边的操作数。
Python 中的对象是真的,除非它是“零”,包括零长度的集合。
推荐阅读
- macos - 使用 PyQt5.QtBluetooth 扫描蓝牙设备
- react-native - React-Native:没有 Expo 的 facebook 登录
- mysql - 如何在具有多个外键的 Spring Boot/JPA 中构造实体?
- javascript - 为什么不能将键码值记录到控制台窗口?
- python - 如何找到两个列表之间的不同组合?
- asp.net - 在单个 API 帖子中动态推送每个设备的不同通知
- python - 使用 Scapy 的数据包嗅探器
- r - 使用 RSTAN 拟合泊松 HMM JAGS 模型
- javascript - 将函数引用传递给单独的 Javascript 文件以进行回调
- amazon-web-services - Flask Mail 不适用于 Gmail 帐户和 AWS 实例