詳解Python中的三元運算
詳解Python中的三元運算
什么是三元運算符
在大部分編程語言中都有三目運算,也稱三元運算,Python語言從Python2.5版本開始也引入了三元運算符。
在Python中,三元運算也稱為條件表達(dá)式,語法如下:
true_expression if condition else false_expression
condition是判斷條件,true_expression 和 false_expression 是兩個表達(dá)式,用 if…else… 連接。
如果 condition 成立(結(jié)果為真),就執(zhí)行 true_expression,并把 true_expression 的結(jié)果作為整個表達(dá)式的結(jié)果。
如果 condition 不成立(結(jié)果為假),就執(zhí)行 false_expression,并把 false_expression 的結(jié)果作為整個表達(dá)式的結(jié)果。
Python中的三元運算符是用 if 和 else 連接,不像Java等語言中是用問號和冒號連接。
例如:
num1 = int(input('請輸入第一個數(shù)字:')) num2 = int(input('請輸入第二個數(shù)字:')) # 三元運算 max_num = num1 if num1 >= num2 else num2 print(f'最大值是:{max_num}')
Output:
請輸入第一個數(shù)字:15646 請輸入第二個數(shù)字:464665 最大值是:464665
上面的示例中,如果 num1 大于或等于 num2,則 max_num 等于 num1,否則 max_num 等于 num2,通過三元運算符求出了兩個數(shù)字中的最大值。
三元運算語句與條件語句的區(qū)別
1.三元運算語句
numa = 100 numb = 10 max_num = numa if numa >= numb else numb print(f'最大值是:{max_num}')
2.條件語句
numa = 100 numb = 10 if numa >= numb: max_num = numa else: max_num = numb print(f'最大值是:{max_num}')
從上面的對比,三元運算語句和條件語句實現(xiàn)的功能完全一樣,但三元運算語句只需要一行代碼,而條件語句有四行代碼。三元運算語句代碼少且可讀性更高,所以大部分情況下,可以說三元運算語句是條件語句的簡寫。
嵌套的三元運算表達(dá)式
num = int(input('請輸入數(shù)字:')) print('負(fù)數(shù)') if str(num)[0] == '-' else print('大于等于100') if num >= 100 else print('小于100的正數(shù)')
上面這行代碼是一個嵌套的三元運算表達(dá)式,其中第一個 else 后面的語句是一個完整的三元運算語句,被作為一個整體當(dāng)作外層三元運算表達(dá)式中的 false_expression ,如下圖所示。
這個表達(dá)式相當(dāng)于下面的條件判斷代碼:
num = int(input('請輸入數(shù)字:')) if str(num)[0] == '-': print('負(fù)數(shù)') else: if num >= 100: print('大于等于100') else: print('小于100的正數(shù)')
還可以繼續(xù)用相同的方法嵌套更多層,不過個人建議不要寫太多嵌套,否則代碼可讀性不增反降,適得其反。
三元運算表達(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)然,還可以舉一反三地將三元運算表達(dá)式與字典推導(dǎo)式和集合推導(dǎo)式等組合使用,更多推導(dǎo)式可以參考:Python列表推導(dǎo)式
三元運算表達(dá)式的優(yōu)點
Python中的三元運算表達(dá)式主要有兩個優(yōu)點:
1.可以用單行的三元運算表達(dá)式替換簡單的條件語句,減少代碼行數(shù)。
2.簡單的三元運算表達(dá)式可以提高代碼的可讀性,使代碼更Pythonic,更優(yōu)雅。
到此這篇關(guān)于詳解Python中的三元運算的文章就介紹到這了,更多相關(guān)Python三元運算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
僅用50行代碼實現(xiàn)一個Python編寫的計算器的教程
這篇文章主要介紹了僅用50行代碼實現(xiàn)一個Python編寫的計算器的教程,主要用到了PlyPlus庫使得核心代碼十分簡單,需要的朋友可以參考下2015-04-04Pandas中字符串和時間轉(zhuǎn)換與格式化的實現(xiàn)
本文主要介紹了Pandas中字符串和時間轉(zhuǎn)換與格式化的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01python圖片指定區(qū)域替換img.paste函數(shù)的使用
這篇文章主要介紹了python圖片指定區(qū)域替換img.paste函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04詳解python架構(gòu)?PyNeuraLogic超越Transformers
這篇文章主要為大家介紹了python使用?PyNeuraLogic超越Transformers示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03如何使用draw.io插件在vscode中一體化導(dǎo)出高質(zhì)量圖片
這篇文章主要介紹了draw.io插件在vscode中一體化導(dǎo)出高質(zhì)量圖片需要的工具是vscode,?draw.io擴展,draw.io桌面版?、python,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒,需要的朋友可以參考下2022-08-08Python技法之如何用re模塊實現(xiàn)簡易tokenizer
當(dāng)我們在Python中開始新的東西時,我通常首先看一些模塊或庫來使用,下面這篇文章主要給大家介紹了關(guān)于Python技法之如何用re模塊實現(xiàn)簡易tokenizer的相關(guān)資料,需要的朋友可以參考下2022-05-05