补充知识:三元运算和逻辑运算
一. 邏輯運算符和邏輯表達式
邏輯表達式是用邏輯運算符和變量連接起來的式子。任何語言的邏輯運算符都一般分為3種——邏輯與、邏輯或和邏輯非。C、Java語言的邏輯運算符用&&、‖、!表示,Python采用and、or、not。下圖列出了Python中的邏輯運算符和表達式。
?
求結果:首先我們需要明白一點,在python中,Flase的值有:None,0 空列表,空字典,空元組,空字符串,自定義的對象實例,該對象的__bool__方法返回False,或__len__返回的0'''v1 = 1 or 3? v2 = 1 and 3? v3 = 0 and 2 and 1 v4 = 0 and 2 or 1 v5 = 0 and 2 or 1 or 4 v6 = 0 or False and 1 v1: 1為True,直接返回1 v2: 1為真,返回3 v3: 0為False,返回0,繼續(xù)計算 0 and 1 ,返回 0 v4: 0為False,返回0,繼續(xù)計算 0 or 4,返回 4 v5: 0為False,返回0,繼續(xù)計算 0 or 1 ,返回1,繼續(xù)計算 1 or 4 返回1 v6 : 0為False,返回后面的False,繼續(xù)計算False and 1 ,返回 False and:當a為True時,才計算b,否則返回a
or:當a為Flase時,才計算b,否則返回a '''
?
二. 三目運算(三元運算)
三元運算符通常在Python里被稱為條件表達式,這些表達式基于真(true)/假(false)的條件判斷,在Python 2.4以上才有了三元操作。它允許用簡單的一行快速判斷,而不是使用復雜的多行if語句。 這在大多數時候非常有用,而且可以使代碼簡單可維護。
下面是一個偽代碼和例子:
偽代碼:
#如果條件為真,返回真 否則返回假 condition_is_true if condition else condition_is_false?例子:
a = 0 b = 1 b =5 if a > 1 else 10 print(b) # 10# 如果a>1,則b=5,否則b=10?
三元運算另一種寫法:
偽代碼:
#(返回假,返回真)[真或假] (if_test_is_false, if_test_is_true)[test]例子:
a = 1 b =1 res = (5,10)[a] print(res) # 10?
上面的例子沒有被廣泛使用,而且Python玩家一般不喜歡那樣,因為沒有Python味兒(Pythonic)。這樣的用法很容易把真正的數據與True/False弄混淆.另外一個不使用元組條件表達式的緣故是因為在元組中會把兩個條件都執(zhí)行,而?if-else?的條件表達式不會這樣。
?
condition = True print(2 if condition else 1 / 0) #輸出: 2print((1 / 0, 2)[condition]) #輸出ZeroDivisionError異常?
這是因為在元組中是先建數據,然后用True(1)/False(0)來索引到數據。所以在建數據的時候,1/0 就報錯,程序就終止了. 而if-else條件表達式遵循普通的if-else邏輯樹, 因此,如果邏輯中的條件異常,或者是重計算型(計算較久)的情況下,最好盡量避免使用元組條件表達式。
三元運算使用邏輯運算符來表示:
x = 表達式 and y(真值返回) or z (假值返回)
例子:
a = 1 b =2b = a > b and 5 or 10print(b) # 10?
轉載于:https://www.cnblogs.com/lovepy3/p/9268006.html
總結
以上是生活随笔為你收集整理的补充知识:三元运算和逻辑运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sourceTree
- 下一篇: 【LNOI2014】【BZOJ3626】