Python中的三元运算符?

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

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

语法

[on_true] if [expression] else [on_false]

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

一种。使用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基本首先评估条件,如果为true –评估第一个表达式,否则评估第二个条件。

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

三元运算符的实现方式

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

一种。使用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