詳解Python中的三元運(yùn)算
詳解Python中的三元運(yùn)算
什么是三元運(yùn)算符
在大部分編程語(yǔ)言中都有三目運(yùn)算,也稱(chēng)三元運(yùn)算,Python語(yǔ)言從Python2.5版本開(kāi)始也引入了三元運(yùn)算符。
在Python中,三元運(yùn)算也稱(chēng)為條件表達(dá)式,語(yǔ)法如下:
true_expression if condition else false_expression
condition是判斷條件,true_expression 和 false_expression 是兩個(gè)表達(dá)式,用 if…else… 連接。
如果 condition 成立(結(jié)果為真),就執(zhí)行 true_expression,并把 true_expression 的結(jié)果作為整個(gè)表達(dá)式的結(jié)果。
如果 condition 不成立(結(jié)果為假),就執(zhí)行 false_expression,并把 false_expression 的結(jié)果作為整個(gè)表達(dá)式的結(jié)果。
Python中的三元運(yùn)算符是用 if 和 else 連接,不像Java等語(yǔ)言中是用問(wèn)號(hào)和冒號(hào)連接。
例如:
num1 = int(input('請(qǐng)輸入第一個(gè)數(shù)字:'))
num2 = int(input('請(qǐng)輸入第二個(gè)數(shù)字:'))
# 三元運(yùn)算
max_num = num1 if num1 >= num2 else num2
print(f'最大值是:{max_num}')
Output:
請(qǐng)輸入第一個(gè)數(shù)字:15646 請(qǐng)輸入第二個(gè)數(shù)字:464665 最大值是:464665
上面的示例中,如果 num1 大于或等于 num2,則 max_num 等于 num1,否則 max_num 等于 num2,通過(guò)三元運(yùn)算符求出了兩個(gè)數(shù)字中的最大值。
三元運(yùn)算語(yǔ)句與條件語(yǔ)句的區(qū)別
1.三元運(yùn)算語(yǔ)句
numa = 100
numb = 10
max_num = numa if numa >= numb else numb
print(f'最大值是:{max_num}')
2.條件語(yǔ)句
numa = 100
numb = 10
if numa >= numb:
max_num = numa
else:
max_num = numb
print(f'最大值是:{max_num}')
從上面的對(duì)比,三元運(yùn)算語(yǔ)句和條件語(yǔ)句實(shí)現(xiàn)的功能完全一樣,但三元運(yùn)算語(yǔ)句只需要一行代碼,而條件語(yǔ)句有四行代碼。三元運(yùn)算語(yǔ)句代碼少且可讀性更高,所以大部分情況下,可以說(shuō)三元運(yùn)算語(yǔ)句是條件語(yǔ)句的簡(jiǎn)寫(xiě)。
嵌套的三元運(yùn)算表達(dá)式
num = int(input('請(qǐng)輸入數(shù)字:'))
print('負(fù)數(shù)') if str(num)[0] == '-' else print('大于等于100') if num >= 100 else print('小于100的正數(shù)')
上面這行代碼是一個(gè)嵌套的三元運(yùn)算表達(dá)式,其中第一個(gè) else 后面的語(yǔ)句是一個(gè)完整的三元運(yùn)算語(yǔ)句,被作為一個(gè)整體當(dāng)作外層三元運(yùn)算表達(dá)式中的 false_expression ,如下圖所示。

這個(gè)表達(dá)式相當(dāng)于下面的條件判斷代碼:
num = int(input('請(qǐng)輸入數(shù)字:'))
if str(num)[0] == '-':
print('負(fù)數(shù)')
else:
if num >= 100:
print('大于等于100')
else:
print('小于100的正數(shù)')
還可以繼續(xù)用相同的方法嵌套更多層,不過(guò)個(gè)人建議不要寫(xiě)太多嵌套,否則代碼可讀性不增反降,適得其反。
三元運(yùn)算表達(dá)式與列表推導(dǎo)式組合
s = [i if i % 2 == 0 else 10*i for i in range(10)] print(s)
Output:
[0, 10, 2, 30, 4, 50, 6, 70, 8, 90]
當(dāng)然,還可以舉一反三地將三元運(yùn)算表達(dá)式與字典推導(dǎo)式和集合推導(dǎo)式等組合使用,更多推導(dǎo)式可以參考:Python列表推導(dǎo)式
三元運(yùn)算表達(dá)式的優(yōu)點(diǎn)
Python中的三元運(yùn)算表達(dá)式主要有兩個(gè)優(yōu)點(diǎn):
1.可以用單行的三元運(yùn)算表達(dá)式替換簡(jiǎn)單的條件語(yǔ)句,減少代碼行數(shù)。
2.簡(jiǎn)單的三元運(yùn)算表達(dá)式可以提高代碼的可讀性,使代碼更Pythonic,更優(yōu)雅。
到此這篇關(guān)于詳解Python中的三元運(yùn)算的文章就介紹到這了,更多相關(guān)Python三元運(yùn)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python隨機(jī)數(shù)用法實(shí)例詳解【基于random模塊】
這篇文章主要介紹了Python隨機(jī)數(shù)用法,結(jié)合實(shí)例形式分析了基于random模塊的各種隨機(jī)數(shù)操作常用技巧,需要的朋友可以參考下2017-04-04
python畫(huà)圖中文不顯示問(wèn)題的解決方法
python中繪圖時(shí)如果標(biāo)簽或者標(biāo)題是中文,最后繪出來(lái)的圖中的文字會(huì)被方框替代,下面這篇文章主要給大家介紹了關(guān)于python畫(huà)圖中文不顯示問(wèn)題的解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Python django框架開(kāi)發(fā)發(fā)布會(huì)簽到系統(tǒng)(web開(kāi)發(fā))
這篇文章主要介紹了Python django框架開(kāi)發(fā)發(fā)布會(huì)簽到系統(tǒng)(web開(kāi)發(fā)),本文通過(guò)實(shí)例代碼效果展示截圖的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
matplotlib交互式數(shù)據(jù)光標(biāo)實(shí)現(xiàn)(mplcursors)
這篇文章主要介紹了matplotlib交互式數(shù)據(jù)光標(biāo)實(shí)現(xiàn)(mplcursors),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
pandas時(shí)間序列之pd.to_datetime()的實(shí)現(xiàn)
本文主要介紹了pandas時(shí)間序列之pd.to_datetime()的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>2022-06-06
np.concatenate()函數(shù)數(shù)組序列參數(shù)的實(shí)現(xiàn)
本文主要介紹了np.concatenate()函數(shù)數(shù)組序列參數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
python中SQLAlchemy使用前端頁(yè)面實(shí)現(xiàn)插入數(shù)據(jù)
這篇文章主要介紹了SQLAlchemy使用前端頁(yè)面實(shí)現(xiàn)插入數(shù)據(jù),文章內(nèi)容介紹詳細(xì)巨頭有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-03-03

