鱼c笔记——三元操作符

对于以前三元操作符的 (x < y and [x] or [y])[0] 理解:

优先级顺序: 比较运算 > not > and > or

因此首先计算 x<y

如果是 True,即 True and [x] 结果为 [x],[x] or [y]=[x],则 [x][0]=x(输出列表的第一个元素)

如果是 False,即 False and [x]=False,False or [y]=[y],[y][0]=y。实现的功能是 x if x < y else y,即三元操作。

而 (x < y and [x] or [y])[0] 为何不采用 x < y and x or y。若采用 x < y and x or y,则当 x=0,y>0 时,x < y and x =0(带入 x, y 即 True and 0);接下来执行 or 操作,0 or y 结果为 y,使结果出错(我们意图这个表达式能有三元操作符----x if x < y else y 的效果,所以在 x = 0, y > 0 时我们想要得到结果 x),故而采用列表的形式。

 

现在的三元操作符为:x if x < y else y

一个三元操作符使用的例子

请将以下代码修改为三元操作符实现:

x, y, z = 6, 5, 4
if x < y:
    small = x
    if z < small:
        small = z
    elif y < z:
        small = y
    else:
        small = z      #此段代码是找到x, y, z的最小值 

实现结果:

small = x if (x < y and x < z) else (y if y < z else z)

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值