在Python中模拟C中的?:运算符

References: http://www.secnetix.de/olli/Python/tricks.hawk#trinary


首先我们需要在Python里面用一个语句达到下面的效果:

if a:
  return b
else:
  return c


List Version

用List,我们可以这么表示:
[c, b][bool(a)]
这个是什么意思呢?
  1. 首先[c, b]创建了一个含有[c, b]的list
  2. 去这个list里面的元素的第bool(a)个,我们知道False转成int是0, True转成1。所以a为False的时候,取[0],也就是c;True的时候,取[1],也就是b。
还有一种写法是如下:
(a and [b] or [c])[0]

Boolean Operator Version

我们还可以这个表示:
a and b or c
这个看到,Python里面的boolean operator是下面这么定义的:
x or y if x is false, then y, else x (1)
x and y if x is false, then x, else y (1)
not x if x is false, then True, else False (2)

所以当a为True的时候,就会返回b。如果a为False的时候,就会返回c。 但是这个用法的一个限制就是当b为False(或者可以转化成False)的时候,就会返回c。所以还是推荐使用List Version。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值