Python3 三元条件判断表达式(if else/and or)

if else表达式用法:

c = a if a>b else b          # 先判断if条件,如果为True,返回a,否则返回b

and or表达式用法:

其原理是利用P and Q,在Python中如果P为假,那么Python将不会继续执行Q,而直接判定整个表达式为假(P值),如果P为真,那就还要继续执行Q来决定整个表达式值;同样的P or Q,如果P为真,那么就不会继续执行Q了

当数据都为布尔类型时,运算结果如下:

true and true = True
true and false = False
false and true = False
false and false = False
true or true = True
true or false = True
false or true = True
false or false = False

当数据存在布尔类型时,运算结果如下:

12 and true = True
true and 12 = 12
false and 12 = False
12 and false = False
12 or true = 12
true or 12 = True
false or 12 = 12
12 or false = 12

由结果可得以下结论:

(1)对于AND,若运算数据中存在False,则为False;否则,返回最右端数据。

(2)对于OR,若运算数据中存在False,则返回剩余数据;否则,返回最左端数据。

当数据都不为布尔类型时,运算结果如下:

6 or 7 = 6
6 and 7 = 7

'a' or 'b' = 'a'
'a' and 'b' = 'b'

6 or 'a' = 6
6 and 'a' = 'a'

 可知,结论还适用。

在Python中,AND的优先级高于OR,因此,我们再按照之前的结论或者原理,可以推算出结果。写代码的时候最好根据原理来写,如果有大量的and/or,就可以用结论来判断。

5 or 6 and 7 = 5
5 and 6 or 7 = 6
5 or 6 or 7 = 5
5 and 6 and 7 = 7

'a' or 'b' and 'c' = 'a'
'a' and 'b' or 'c' = 'b'
'a' or 'b' or 'c' = 'a'
'a' and 'b' and 'c' = 'c'

1 or 'b' and 'c' = 1
1 and 'b' or 'c' = 'b'
1 or 'b' or 'c' = 1
1 and 'b' and 'c' = 'c'

特殊情况None(不包含布尔):

1.当与具体值比较时:and返回的是None,or返回的是具体值

'a' and None = None
None and 'a' = None
'a' or None = 'a'
None or 'a' = 'a'

1 and None = None
None and 1 = None
1 or None = 1
None or 1 = 1

None and 1 or 'a' = 'a'
1 and None or 'a' = 'a'
1 and 'a' or None = 'a'

2.当与空值(如:空列表/空集合/空字典)比较时:and返回的是左边的值,or返回的是右边的值

[] and None = []
None and [] = None
[] or None = None
None or [] = []

猜你喜欢

转载自blog.csdn.net/weixin_41611054/article/details/92841704