python三元運算子實現方法_python

來源:互聯網
上載者:User

這是今天在溫習lambda運算式的時候想到的問題,眾所周知C系列語言中的 三元運算子(?:)是一個非常好用的語句,

關於C中的三元運算子

運算式1?運算式2:運算式3

那麼在python應該如何?呢,請看下面例子:

答案是: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執行布爾邏輯演算,但是它們並不返回布爾值;而是,返回它們實際進行比較的值之一。
如果布爾上下文中的所有值都為真,那麼and返回最後一個值。上下文中的某個值為假,則and返回第一個假值。
如果有一個值為真,or立刻返回該值。如果所有的值都為假,or返回最後一個假值
基於上述的背景,你應該還能理解這個運算式的含義了吧。

“註:“裡面應該是這個用法的一些缺陷,如果運算式2或3是幾個定義的假值(0、''、[]、()、{}、None)之一,就會影響判斷了,我的建議是吧這些假值都用字串的形式表現,並且將“”特殊處理為“”。後續再做判斷

再次見識到Python的強大,如果您有什麼見解歡迎評論。

後記:

最近看了一些文章,有位大神對這個問題對這個缺陷給了一個完美的解決方案

X=(運算式1)and[運算式2(真值返)]or[運算式3(假值返回)](註:運算式2以及表達3不能為0、''、[]、()、{}、None)

對錶達式2,3用中括弧括起來,這樣兩者的值將永遠不會為假,這個解決方案的確不錯。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.