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)]
这个是什么意思呢?
- 首先[c, b]创建了一个含有[c, b]的list
- 去这个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。