Python and-or以及三目表达式语法

Python中的and-or以及三目表达式语法

1.and

在python中,and自左向右扫描布尔表达式,如果所有值为真,则返回最后一个为真的表达式,如果为假,则返回第一个为假的表达式,例如:

print(2 and  1 and 3)
#这种情况下打印的值为3,即整个表达式中最后一个为真的部分
print(1 and 3 and 0 and 4)
#这种情况下打印第一个为假的部分
print(1 and  0 and 3/0)
#注意这个地方的运算方式与C一样,如果判断这个布尔表达式已经为假,则返回第一个为假的部分,并且不再进行接下来的计算,这里就不会报告除0的错误

注意这个地方会执行短路规则,一旦计算得出表达式是假,则直接返回第一个为假的值,不继续进行运算。

2.or

or的使用与and正好相反,自左向右计算整个布尔表达式,如果有为真的值,那么立刻返回第一个为真的值,如果整个表达式为假,则返回最后一个为假的值

print(0 or 1 or 1/0)
#返回的是第一个真值,并且不再继续进行运算,所以没有除0报错
print(0 or '')
#返回的是最后一个假值

3.and-or

and-or的组合使用与上述的规则一致,例如:

a = "first"
b = "second"
print(False and a or b)  #输出为second
print(True and a or b)   #输出为first

这时候,大家会发现这样使用跟三目表达式很相似,也确实如此,但是有一个问题就是如果a的值为假的时候,就不能像真的三目表达式一样工作了(这时候会进行and运算之后还会判断 or b的值),为了解决这个问题,可以使用列表的方法,例如:

a = "first"
b = "second"
print( (1 and [a] or [b] )[0] )
print( (0 and [a] or [b] )[0] )

a = 0
b = "second"
print( (1 and [a] or [b] )[0] )
print( (0 and [a] or [b] )[0] )

这样,就算a的值是假,因为列表元素总是不为空的,所以总是可以得到正确结果。

4.三目运算符

在前面的and-or的组合使用其实就相当于对三目运算符的模拟,其实python本身也有自己的三目表达式,python的三目表达式与其他语言不太一样,例如在C等语言中,我们的三目运算符是这样的格式:

bool ?a:b

在python中使用 if - else:

a = "first"
b = "second"
result1 = a if 1 > 0 else b
print(result1)
result2 = a if 1 < 0 else b
print(result2)

简单来说就是if后边跟bool表达式,如果为真,就去最前面a,否则取后边的b。

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值