Python中并不像C#中的条件运算符那样使用简洁的符号来实现三元运算的,而是借助了if-else语句。换句话说,Python其实没有提供真正意义上的三元条件运算符,而是借助了if-else来实现,但其语法格式比if-else分支语句要简洁很多。
在Python2.5中,Python提供了该项功能,官方文档把其称之为条件表达式(conditional expression)。
其语法格式可以使用下面的形式来描述:
[when_true] if [condition] else [when_false]
在语法中,condition一般是个逻辑表达式或逻辑值。开始执行时,先判断[condition]的值,如果其值为True,则返回[when_true]的值,否则返回[when_false]的值。
下面的程序是判断一个数x是奇数还是偶数:
x = 133
oddOrEven = "偶数" if x % 2 == 0 else "奇数"
print("{0}是{1}".format(x, oddOrEven))
程序输出如下:
133是奇数
当然,上面的程序比较简洁,但是如果对该用法不清楚的话,可能不知其意,即可读性比较差。
上面这段程序实际上相当于下面这种情形:
x = 133
if x % 2 == 0:
oddOrEven = "偶数"
else:
oddOrEven = "奇数"
print("{0}是{1}".format(x, oddOrEven))
上面程序的输出结果与前一个相同。
在Python中,这种三元语句可以嵌套使用。
#嵌套使用
x = 13
y = 14
oddeven = "x是偶数" if x % 2 == 0 else "x是奇数,y是偶数" /
if y % 2 == 0 else "全是奇数"
print(oddeven)
程序输出如下:
x是奇数,y是偶数
要注意,上面的程序只是演示嵌套使用的方法,程序本身并不能准确判断出x和y的奇偶情况。
Python中的元组也支持类似的三元运算情况。其语法为:
(when_false, when_true)[condition]
要注意元组中的第一个值是为False时的输出,第二个值是为True时的输出。
x = 124
oddeven = ("奇数", "偶数")[x % 2==0]
print(oddeven)
其输出结果为:
偶数
在掌握了Python三元运算的使用技巧后,我们可以灵活使用这种方法,以减少代码量。
新闻热点
疑难解答