在计算机语言中,有一种叫做 三目运算 的表达式(也叫三元表达式)。主要用于处理不同条件下的变量取值,简化版的逻辑判断语句。
基本表达式如下:
变量 = 值1 if 条件 else 值2
如果
条件
满足,则变量取值1
,否则取值2
下例中的 x 当 a > b 的时候取 a 的值,否则取 b 的值:
>>> a = 5
>>> b = 10
>>> x = a if a > b else b # 如果 a > b 取 a,否则取 b
>>> x # a 明显不大于 b,所以取 else 后面的 b
10
从键盘接收输入,如果输入不为空,变量 isinput 取值 True,否则为 False:
>>> isinput = True if input('输入:') else False
输入:x
>>> isinput
True
>>> isinput = True if input('输入:') else False
输入: # 直接回车,相当于接收了一个空字符串
>>> isinput
False
其他语言中的写法一般类似变量 = 条件 ? 值1:值2
,条件成立则取值1,否则取值2:
n = 8>4?1:0 //取值为0
Python 中还有一种三目运算的简化写法:
变量 = 值1 or 值2
如果
值1
存在则变量的值为值1
,否则当值1
不存在(值1为None,为0,为空字符串、空列表等用布尔表达式预算为 False 的情况)则取值2
相当于:变量 = 值1 if 值1 else 值2
例子,
>>> a = []
>>> x = a or 10
>>> x # a 为 0,在条件中为 False
10
# 修改一下上面 input 的例子:
>>> y = input('输入:') or 'nothing'
输入: # 直接回车,相当于输入空字符串
>>> y
'nothing'
>>> y = input('输入:') or 'nothing'
输入:hi!
>>> y
'hi!'