Python中not的用法和各類容易踩坑點總結

2021-10-19 12:17:33 字數 1994 閱讀 6611

在python中not是邏輯判斷詞,用於布林型true和false,not true為false,not false為true,以下是幾個常用的not的用法:

比如:a = false

if not a: 

(這裡因為a是false,所以not a就是true)

print "hello"

這裡就能夠輸出結果hello

if a not in b,a是元素,b是列表或字典,這句話的意思是如果a不在列表b中,那麼就執行冒號後面的語句,比如:

a = 5

b = [1, 2, 3]

if a not in b:

print "hello"

這裡也能夠輸出結果hello

not x 意思相當於 if x is

false, then true, else false 

第一種是`if x is none`;

第二種是 `if not x:`;

第三種是`if not x is none`(這句這樣理解更清晰`if not (x is none)`) 。

先來看一下**:

>>> x = 1  

>>> not x  

false

>>> x = [1]  

>>> not x  

false 

>>> x = 0  

>>> not x  

true

>>> x = [0]        # you don't want to fall in this one.  

>>> not x  

false

在python中none, false,0,空字串"",空列表, 空字典{}, 空元組()都相當於false,即:

not none == not false == not 0 == not ''  == not  == not {} == not ()  

>>> x =   

>>> y = none  

>>>   

>>> x is none  

false  

>>> y is none  

true 

>>>   

>>>   

>>> not x  

true

>>> not y  

true

>>>   

>>>   

>>> not x is none  

>>> true 

>>> not y is none  

false

也許你是想判斷x是否為none,但是卻把`x==`的情況也判斷進來了,此種情況下將無法區分。

對於習慣於使用if not x這種寫法的pythoner,必須清楚x等於none,  false, 空字串"", 0, 空列表, 空字典{}, 空元組()時對你的判斷沒有影響才行。 

而對於`if x is not none`和`if not x is none`寫法,很明顯前者更清晰,而後者有可能使讀者誤解為`if (not x) is none`,因此推薦前者,同時這也是谷歌推薦的風格

結論:

① `if x is not none`是清晰的寫法,不會出現錯誤,可以堅持使用這種寫法。

使用if not x這種寫法的前提是:必須清楚x等於none,  false, 空字串"", 0, 空列表, 空字典{}, 空元組()時對你的判斷沒有影響才行。

② 不過在 「判斷列表是否為空」之類的問題時,if not x 寫法的執行效率會比 if x == 略高。(leetcode中同一題使用前者840ms,後者1144ms)

參考:

python中的and和or用法

在python中and和or返回的值並不是true和false這麼簡單。雖然他們看上去和c 中的 和 有些相似。在了解and和or之前,我們先要了解python中的true和false。在python裡面,0 none為假,其它任何東西都為真。ok,在此前提下。看這樣乙個例子 我們大致可以總結出這樣...

python中 and和or用法

在python 中,and 和 or 執行布林邏輯演算,如你所期待的一樣。但是它們並不返回布林值,而是返回它們實際進行比較的值之一。類似c 裡面的 和 的短路求值 在布林環境中,0 none為假 其它任何東西都為真。但是可以在類中定義特定的方法使得類例項的演算值為假。and例項 python vie...

Python中WordCloud各引數的含義

用python畫詞云時,需要用到wordcloud,下面羅列了它各個引數的含義 font path string 字型路徑,需要展現什麼字型就把該字型路徑 字尾名寫上,如 font path 黑體.ttf width int default 400 輸出的畫布寬度,預設為400畫素 height i...