Python中的三元运算符?


许多编程语言都支持三元运算符,它基本上定义了一个条件表达式。

同样,Python中的三元运算符用于根据二元条件的结果返回一个值。它以二元值(条件)作为输入,因此看起来类似于“if-else”条件块。但是,它也返回值,因此行为类似于函数。

语法

[on_true] if [expression] else [on_false]

让我们编写一个简单的程序,比较两个整数:

a. 使用Python if-else语句:

>>> x, y = 5, 6
>>> if x>y:
   print("x")
else:
   print("y")
y

b. 使用三元运算符

>>> x, y = 5, 6
>>> print("x" if x> y else "y")
y

使用三元运算符,我们能够在一行代码中编写代码。因此,Python首先评估条件,如果为真,则评估第一个表达式;否则,评估第二个条件。

>>> def find_max(a,b):
return a if (a>b) else b
>>> find_max(5, 6)
6

实现三元运算符的方法

以下是实现三元运算符的不同方法。

a. 使用Python元组

>>> a, b = random(), random()
>>> (b, a) [a>b]
0.5497848117028667

以上等同于:

>>> (b, a) [True]
0.5065247098746795

但是,如果您对返回的值是“a”还是“b”感到困惑。让我们重写上面的代码。

>>> (f"b:{b}", f"a:{a}") [a>b]
'b:0.5497848117028667'

b. 使用Python字典

>>> a, b = random(), random()
>>> {False: f"b:{b}", True: f"a:{a}"}[a>b]
'a:0.8089581560973976'

我们可以互换键值对:

>>> {True: f"a:{a}", False: f"b:{b}"}[a>b]
'a:0.8089581560973976'

c. 使用Lambda表达式

我们可以使用Python lambda函数作为三元运算符:

>>> (lambda: f"a:{a}", lambda: f"b:{b}")[a>b]()
'b:0.6780078581465793'

嵌套Python三元运算符

让我们尝试链接这些运算符:

>>> from random import random
>>> x = random()
>>> "Less than zero" if x<0 else "between 0 and 5" if a>=0 and a<=5 else "Greather than five"

输出

'between 0 and 5'

让我们检查x的实际值:

>>> x
0.08009251123993566

更新于:2019年7月30日

11K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.