Python中并不像C#中的條件運(yùn)算符那樣使用簡潔的符號來實現(xiàn)三元運(yùn)算的,而是借助了if-else語句。換句話說,Python其實沒有提供真正意義上的三元條件運(yùn)算符,而是借助了if-else來實現(xiàn),但其語法格式比if-else分支語句要簡潔很多。
在Python2.5中,Python提供了該項功能,官方文檔把其稱之為條件表達(dá)式(conditional expression)。
其語法格式可以使用下面的形式來描述:
[when_true] if [condition] else [when_false]
在語法中,condition一般是個邏輯表達(dá)式或邏輯值。開始執(zhí)行時,先判斷[condition]的值,如果其值為True,則返回[when_true]的值,否則返回[when_false]的值。
下面的程序是判斷一個數(shù)x是奇數(shù)還是偶數(shù):
x = 133
oddOrEven = "偶數(shù)" if x % 2 == 0 else "奇數(shù)"
print("{0}是{1}".format(x, oddOrEven))
程序輸出如下:
133是奇數(shù)
當(dāng)然,上面的程序比較簡潔,但是如果對該用法不清楚的話,可能不知其意,即可讀性比較差。
上面這段程序?qū)嶋H上相當(dāng)于下面這種情形:
x = 133
if x % 2 == 0:
oddOrEven = "偶數(shù)"
else:
oddOrEven = "奇數(shù)"
print("{0}是{1}".format(x, oddOrEven))
上面程序的輸出結(jié)果與前一個相同。
在Python中,這種三元語句可以嵌套使用。
#嵌套使用
x = 13
y = 14
oddeven = "x是偶數(shù)" if x % 2 == 0 else "x是奇數(shù),y是偶數(shù)" /
if y % 2 == 0 else "全是奇數(shù)"
print(oddeven)
程序輸出如下:
x是奇數(shù),y是偶數(shù)
要注意,上面的程序只是演示嵌套使用的方法,程序本身并不能準(zhǔn)確判斷出x和y的奇偶情況。
Python中的元組也支持類似的三元運(yùn)算情況。其語法為:
(when_false, when_true)[condition]
要注意元組中的第一個值是為False時的輸出,第二個值是為True時的輸出。
x = 124
oddeven = ("奇數(shù)", "偶數(shù)")[x % 2==0]
print(oddeven)
其輸出結(jié)果為:
偶數(shù)
在掌握了Python三元運(yùn)算的使用技巧后,我們可以靈活使用這種方法,以減少代碼量。
新聞熱點
疑難解答