Conditional operator in Python

Kadai
Jan 18, 2017

--

今天突然一個想到,不知道 Python 裡面有沒有像 JS 一樣的 Conditional (Ternary) Operator 的寫法:

variablename = (condition) ? value1:value2

那時候在學寫 JS 的時候,覺得這種寫法真的是太美了,所以今天一個熊熊好奇 Python 中有沒有類似的寫法呢,就來搜尋了一下,結果就有找到幾種類似的,讓我們來把下面的 code 簡化一下吧:

if (condition):
variablename = value1
else:
variablename = value2

當 condition 為 true 的時候會回傳 value1 反之 回傳 value2,以下找到三種簡化的方法

方法ㄧ:(condition) and value1 or value2 (update: 在 python 3 無效,好像只適用於 python 2.x)

variablename = (condition) and value1 or value2

方法二:[value1, value2][condition]

variablename = [value2, value1][condition]

方法三:value1 if condition else value2

variablename = value1 if condition else value2

第三種方法最為直覺了,因為就只是把 if…else… 縮進一行裡而已,第一種跟第二種是我從來都沒看過的寫法,覺得蠻有趣的。

資料來源:

http://stackoverflow.com/questions/2191890/conditional-operator-in-python

http://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator

--

--