标签:数据转换 需要 www. http 来源 并且 就是 逻辑 python
a, b, c = 1, 2, 3
# 1.常规
if a>b:
c = a
else:
c = b
# 2.表达式
c = a if a>b else b # 先执行中间的if,如果返回True,就是左边,False是右边。
# 3.二维列表
c = [b,a][a>b] #实际是[b,a][False],因为False被转换为0,所以是[1,2][0],也就是[1]
# False返回第一个,True 返回第一个。
# 4
c = (a>b and [a] or [b])[0]
# 这个比较好玩,False and [1] or [2],因为and的优先级高于or,先算and
# False和[1] and之后还是False,和[2]or之后却成了[2]
# True 和[1] and之后是[1],[1]和[2]or结果是[1]
# 也就是False和True在和别人做boolean运算的时候,根据and还是or,F和T在前在后有不一样的数据转换规则。
---------------------
作者:lobbiy
来源:CSDN
原文:https://blog.csdn.net/bcs_01/article/details/79373322
转自:https://www.cnblogs.com/huchong/p/7535542.html
引子:
>>> print ‘‘ or 5 or 0
5
>>> print 5 and 4
4
>>> print ‘‘ or 5 or 0 and 4
5
出现以上情况的原因是什么呢?
(False or 1) 输出1
(1 or False) 输出1
(True or 1)输出前者
(1 or True) 输出前者
(True and 1) 输出后者
(1 and True) 输出后者
(False and 1)输出False
(1 and False) 输出False
对python而言
其一, 在不加括号时候, and优先级大于or
其二, x or y 的值只可能是x或y. x为真就是x, x为假就是y
第三, x and y 的值只可能是x或y. x为真就是y, x为假就是x
显然,
对于, 1 or 5 and 4: 先算5 and 4, 5为真, 值为4. 再算1 or 4, 1 为真,值为1
对于, (1 or 5) and 4: 先算1 or 5, 1为真, 值为1. 再算1 and 4, 1为真,值为4
在Python中,空字符串为假,非空字符串为真。非零的数为真。
数字和字符串之间、字符串之间的逻辑操作规律是:
对于and操作符:
只要左边的表达式为真,整个表达式返回的值是右边表达式的值,否则,返回左边表达式的值
对于or操作符:
只要两边的表达式为真,整个表达式的结果是左边表达式的值。
如果是一真一假,返回真值表达式的值
如果两个都是假,比如空值和0,返回的是右边的值。(空值或0)
总结一句话就是:无论操作符是哪个,最后的结果一定是按照计算顺序能最快判断出结果的那个表达式决定的
[转]python条件表达式的四种实现方法 和 and、or 的计算规则
标签:数据转换 需要 www. http 来源 并且 就是 逻辑 python
原文地址:https://www.cnblogs.com/latup/p/9864629.html