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.