今天突然一個想到,不知道 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