python - 如果没有 if,python 逻辑运算符和或如何工作?
问题描述
网上找了这两条线后,不明白第一条线是怎么跟第二条线效果一样的
current = letter >= prev_letter and current + letter or letter
current = current + letter if letter >= prev_letter else letter
解决方案
and
表达式的结果要么是第一个假操作数,要么是第二个操作数。表达式的结果or
要么是第一个真值操作数,要么是第二个操作数。第一条语句等同于:
current = (letter >= prev_letter and current + letter) or letter
这意味着如果条件是, 或,letter >= prev_letter and current + letter
将计算结果。这个结果就是表达式的左侧。如果,则表达式将计算为。否则,它将保持为。False
False
current + letter
or
False
or
letter
current + letter
但是,这两个表达式可能不等价,具体取决于变量的值。例如,假设current
是 -1、1letter
和prev_letter
0。那么and
表达式的计算结果为 0。这意味着表达式的结果or
将为letter
1。对于这些相同的值,第二个表达式将设置current
为 0。
推荐阅读
- spring-integration - Spring路由inputChannel时第一个channel总是出错
- android - 我是否需要 CryptoObject 对象,或者在 FingerprintManager.authenticate 期间对于以下用例为 null
- ansible - Ansible WinRM 仅适用于组中 5 台主机中的 2 台主机
- apache - 如何从 PKCS#7 生成 .key 和 .crt
- arrays - (整数)切片索引作为结构数组
- django - “需要一个有效的文件名!” xhtml2pdf 与 Django
- android - 在 RecyclerView 项目按钮 OnClick 中使用共享首选项
- php - 添加 Google auth 2.0 应用程序需要什么范围?
- mongodb - MongoDB Shell - 打印数组的第一个元素
- html - 如何将文本元素设置为 0px 宽度?