上周五寫程序碰到需要處理多重判斷的一個邏輯,一般正確的寫法是:
if a or b or (c and d) or e:
pass
因為變量很長,看上去比較雜亂,自己靈機一動寫成了如下的樣子:
if a | b | c&d | e
運行程序,一直報錯,后來才恍然大悟,發現一下子犯了兩個錯誤:
第一:python 中& |是位操作
& 按位與 數的按位與 5 & 3得到1。
| 按位或 數的按位或 5 | 3得到7。
第二:python中& |是同樣優先級的操作,沒有括號時,從左向右操作。
后來自己又想到用&&及||這兩個運算符,發現Python中竟也沒有這兩個運算符。
最終,找到了python中的any方法,能夠比較好的滿足自己的需求。
any([a, b, (c and d), e])
any即針對的是一個list,判斷list中的某個元素是否為真,此時只要有一個元素為真,list元素全部輸出。
any的用法:
>>> any('123')
True
>>> any([0,1])
True
>>> any([0,''])
False
>>> any([0,'','false'])
True
>>> any([0,'',bool('false')])
True
>>> any([0,'',False])
False
>>> any(('a','b','c'))
True
>>> any(('a','b',''))
True
>>> any((0,False,''))
False
>>> any([])
False
>>> any(())
False
all的用法:
>>> all(['a','b','c','d'])
True
>>> all(['a','b',''])
False
>>> all([0,1,2,3])
False
>>> all((0,1,2,3))
False
>>> all([])
True
>>> all(())
True # 注意:空元祖,空列表返回值返回為True
>>> all(('','','','')) # 空字符串元組為False
False
>>> all('') #空字符串為True
True