Python三目運(yùn)算符(三元運(yùn)算符)用法詳解(含實(shí)例代碼)
一、前言
三目運(yùn)算符,又稱條件運(yùn)算符,是計(jì)算機(jī)語言(c,c++,java等)的重要組成部分。它是唯一有3個(gè)操作數(shù)的運(yùn)算符,有時(shí)又稱為三元運(yùn)算符。
定義:
對(duì)于條件表達(dá)式b ? x : y
,先計(jì)算條件b,然后進(jìn)行判斷。如果b的值為true,計(jì)算x的值,運(yùn)算結(jié)果為x的值;否則,計(jì)算y的值,運(yùn)算結(jié)果為y的值。
一個(gè)條件表達(dá)式絕不會(huì)既計(jì)算x,又計(jì)算y。
條件運(yùn)算符是右結(jié)合的,也就是說,從右向左分組計(jì)算。例如,a ? b : c ? d : e
將按a ? b : (c ? d : e)執(zhí)行。
可以理解為條件 ? 結(jié)果1 : 結(jié)果2 里面的?號(hào)是格式要求。也可以理解為條件是否成立,條件成立為結(jié)果1,否則為結(jié)果2。
注意:在C語言中,結(jié)果1 和 結(jié)果2的類型必須一致。
a ? b : c簡(jiǎn)單理解方式為:
if(a) { return b; } else { return c; }
一個(gè)C語言中的例子解釋:
int a = 2; int c = 3; int b = (a > c) ? a : c; cout << "b:" << b << endl;
cout
是c++語言的輸出符號(hào)。
endl
英語意思是end of line
,即一行輸出結(jié)束,然后輸出下一行。
cout<<endl
是使程序此行輸出結(jié)束。
cout<<"b:"<<b<<endl
:類似于C中的:printf(“b:%d\n”,b)。
我們知道a>c
的結(jié)果是False
,所以b值返回c。
所以我們的輸出結(jié)果為:
b:3
接下來看個(gè)復(fù)雜的:
int a = 1, b = 2, z, c = 3; z = a > b ? a : (b > c ? b : c); cout << "z:" << z << endl;
我們看右部分:b>c
返回值為False
,所以返回3
a>b
返回False
,所以最終輸出為:z:3
至此,大家理解了三元運(yùn)算符的定義。
二、Python中的三目運(yùn)算符
Python語言不像Java、JavaScript等這些語言有這樣的三目運(yùn)算:
判段的條件?條件為真時(shí)的結(jié)果:條件為假時(shí)的結(jié)果
但是Python也有自己的三目運(yùn)算符:
條件為真時(shí)的結(jié)果 if 判段的條件 else 條件為假時(shí)的結(jié)果
即:Python可以通過if
語句來實(shí)現(xiàn)三目運(yùn)算符的功能,因此可以把這種if
語句當(dāng)做三目運(yùn)算符,具體語法格式如下:
返回True執(zhí)行 if 表達(dá)式 else 返回False執(zhí)行
我們舉一個(gè)簡(jiǎn)單的例子來幫助理解:
假設(shè)現(xiàn)在有兩個(gè)數(shù)字,我們希望獲得其中較大的一個(gè),那么可以使用 if else 語句,例如:
if a>b: max = a else: max = b
但是 Python 提供了一種更加簡(jiǎn)潔的寫法,如下所示:
max = a if a>b else b
這里詳細(xì)解釋一下:
max = a if a>b else b
的含義是:
如果 a>b 成立,就把 a 作為整個(gè)表達(dá)式的值,并賦給變量 max;
如果 a> b 不成立,就把 b 作為整個(gè)表達(dá)式的值,并賦給變量 max。
第二個(gè)例子:
a = "返回True執(zhí)行" if 3 > 4 else "返回False執(zhí)行" print (a)
我們的判斷條件為3>4
是不滿足的,所以執(zhí)行返回False執(zhí)行
運(yùn)行結(jié)果:返回False執(zhí)行
三、在三目運(yùn)算符中放置多條語句方式
在Python的三目運(yùn)算符中,允許在"返回True執(zhí)行"和"返回Flase執(zhí)行"中放置多條語句,有以下兩種方式:
1. 使用英文逗號(hào)隔開,每條放置的語句都會(huì)執(zhí)行,程序返回多條語句的返回值組成的元組:
b = 3 + 1, "3 > 2",print('AAA') if 1 > 2 else print("BBB"),2 + 2 print (b)
上面的例子中,因?yàn)?1 > 2
是False
,所以執(zhí)行并返回3 + 1,"3 > 2",2 + 2,print("BBB")
這四條語句,由于print()函數(shù)沒有返回值,故返回None,運(yùn)行結(jié)果如下:
BBB (4, '3 > 2', None, 4)
2. 使用英文分號(hào)隔開,每條語句都會(huì)執(zhí)行,但程序只會(huì)返回第一條語句的返回值:
b = 1 + 1; "3 > 2";print('AAA') if 1 > 2 else print("BBB");2 + 2 print (b)
這里的if…else…執(zhí)行print(“BBB”),返回的是第一條語句1 + 1的返回值2,所以,運(yùn)行結(jié)果如下:
BBB2
四、總結(jié)
這是一種類似于其它編程語言中三目運(yùn)算符? :
的寫法。
Python 是一種極簡(jiǎn)主義的編程語言,它沒有引入? :
這個(gè)新的運(yùn)算符,而是使用已有的 if else
關(guān)鍵字來實(shí)現(xiàn)相同的功能。
使用 if else
實(shí)現(xiàn)三目運(yùn)算符(條件運(yùn)算符)的格式如下:
exp1 if contion else exp2
condition
是判斷條件,exp1
和 exp2
是兩個(gè)表達(dá)式。
如果 condition 成立(結(jié)果為真),就執(zhí)行 exp1,并把 exp1 的結(jié)果作為整個(gè)表達(dá)式的結(jié)果;
如果 condition 不成立(結(jié)果為假),就執(zhí)行 exp2,并把 exp2 的結(jié)果作為整個(gè)表達(dá)式的結(jié)果。
五、三目運(yùn)算符的嵌套
Python 三目運(yùn)算符支持嵌套,如此可以構(gòu)成更加復(fù)雜的表達(dá)式。在嵌套時(shí)需要注意 if 和 else
的配對(duì),例如:
a if a>b else c if c>d else d
應(yīng)該理解為:
a if a>b else ( c if c>d else d )
就是我們上面講的:條件運(yùn)算符是右結(jié)合的
例子:
a = int( input("Input a: ") ) b = int( input("Input b: ") ) print("a大于b") if a>b else ( print("a小于b") if a<b else print("a等于b") )
運(yùn)行結(jié)果:
Input a: 5
Input b: 6
a小于b
該程序是一個(gè)嵌套的三目運(yùn)算符。程序先對(duì) a>b
求值,如果該表達(dá)式為 True,程序就返回執(zhí)行第一個(gè)表達(dá)式 print(“a大于b”),否則將繼續(xù)執(zhí)行 else 后面的內(nèi)容,也就是:( print("a小于b") if a<b else print("a等于b") )
,進(jìn)入該表達(dá)式后,先判斷 a<b 是否成立,如果 a<b 的結(jié)果為 True,將執(zhí)行 print(“a小于b”),否則執(zhí)行 print(“a等于b”)。
總結(jié)
到此這篇關(guān)于Python三目運(yùn)算符(三元運(yùn)算符)用法詳解的文章就介紹到這了,更多相關(guān)Python三目運(yùn)算符用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文教你掌握Python中Lambda表達(dá)式的5種實(shí)用技巧
在Python編程的宇宙里,有一個(gè)強(qiáng)大而靈活的工具經(jīng)常被高效的程序員所利用——那就是Lambda表達(dá)式,下面就讓我們深入了解Lambda表達(dá)式的妙用吧2024-01-01Python處理Excel的14個(gè)常用操作總結(jié)
在數(shù)據(jù)處理和分析的領(lǐng)域中,Excel是一種被廣泛使用的工具,然而,通過Python處理Excel,能夠更好地實(shí)現(xiàn)自動(dòng)化和批量處理,本文為大家整理了14個(gè)Python處理Excel的常用操作,希望對(duì)大家有所幫助2023-12-12基于Python實(shí)現(xiàn)Excel轉(zhuǎn)Markdown表格
Markdown(也簡(jiǎn)稱md)作為一種輕量級(jí)標(biāo)記語言,因其易寫易讀,效果美觀大方,不僅被眾多網(wǎng)站使用,也是程序員們做筆記、寫文檔的首選。本文將利用Python實(shí)現(xiàn)Excel轉(zhuǎn)Markdown表格,感興趣的可以了解一下2022-04-04利用python下載scihub成文獻(xiàn)為PDF操作
這篇文章主要介紹了利用python下載scihub成文獻(xiàn)為PDF操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07python?字符串索引取值的實(shí)現(xiàn)示例
本文主要介紹了python?字符串索引取值的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07正則化DropPath/drop_path用法示例(Python實(shí)現(xiàn))
DropPath 類似于Dropout,不同的是 Drop將深度學(xué)習(xí)模型中的多分支結(jié)構(gòu)隨機(jī)"失效",而Dropout是對(duì)神經(jīng)元隨機(jī)"失效"這篇文章主要給大家介紹了關(guān)于正則化DropPath/drop_path用法的相關(guān)資料,需要的朋友可以參考下2022-04-04