python三元運算符實現(xiàn)方法
這是今天在溫習lambda表達式的時候想到的問題,眾所周知C系列語言中的 三元運算符(?:)是一個非常好用的語句,
關于C中的三元運算符
表達式1?表達式2:表達式3
那么在python應該如何實現(xiàn)呢,請看下面例子:
答案是:X = (表達式1)and 表達式2(真值返回)or 表達式3(假值返回)
舉個例子:
def main():
y = 5
x = (y > 5) and 2 or 4
print x
pass
這段代碼的是意思的輸出是4,可以把表達式的條件改為(y<=5)這時候輸出就是2
為什么能得到這樣的結果:
0、''、[]、()、{}、None在布爾上下文中為假;其它任何東西都為真。
在Python中,and和or執(zhí)行布爾邏輯演算,但是它們并不返回布爾值;而是,返回它們實際進行比較的值之一。
如果布爾上下文中的所有值都為真,那么and返回最后一個值。上下文中的某個值為假,則and返回第一個假值。
如果有一個值為真,or立刻返回該值。如果所有的值都為假,or返回最后一個假值
基于上述的背景,你應該還能理解這個表達式的含義了吧。
“注:“里面應該是這個用法的一些缺陷,如果表達式2或3是幾個定義的假值(0、''、[]、()、{}、None)之一,就會影響判斷了,我的建議是吧這些假值都用字符串的形式表現(xiàn),并且將“”特殊處理為“”。后續(xù)再做判斷
再次見識到Python的強大,如果您有什么見解歡迎評論。
后記:
最近看了一些文章,有位大神對這個問題對這個缺陷給了一個完美的解決方案
X=(表達式1)and[表達式2(真值返)]or[表達式3(假值返回)](注:表達式2以及表達3不能為0、''、[]、()、{}、None)
對表達式2,3用中括號括起來,這樣兩者的值將永遠不會為假,這個解決方案的確不錯。
相關文章
python基于paramiko庫遠程執(zhí)行 SSH 命令,實現(xiàn) sftp 下載文件
這篇文章主要介紹了python基于paramiko庫遠程執(zhí)行 SSH 命令,實現(xiàn) sftp 下載文件的方法,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下2021-03-03
python用函數(shù)創(chuàng)造字典的實例講解
在本篇文章里小編給大家整理的是一篇關于python用函數(shù)創(chuàng)造字典的實例講解內容,有需要的朋友們可以學習參考下。2021-06-06
Python3.6+Django2.0以上 xadmin站點的配置和使用教程圖解
django自帶的admin站點雖然功能強大,但是界面不是很好看。這篇文章主要介紹了Python3.6+Django2.0以上 xadmin站點的配置和使用 ,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06
python循環(huán)某一特定列的所有行數(shù)據(jù)(方法示例)
在Python中,處理表格數(shù)據(jù)(比如CSV文件、Excel文件等)時,我們通常會使用pandas庫,因為它提供了豐富的數(shù)據(jù)結構和數(shù)據(jù)分析工具,下面,我將以處理CSV文件中的某一特定列的所有行數(shù)據(jù)為例,給出詳細、完整的代碼示例,感興趣的朋友跟隨小編一起看看吧2024-08-08
Django中實現(xiàn)點擊圖片鏈接強制直接下載的方法
這篇文章主要介紹了Django中實現(xiàn)點擊圖片鏈接強制直接下載的方法,涉及Python操作圖片的相關技巧,非常具有實用價值,需要的朋友可以參考下2015-05-05

