python中的与 和 或

上周五写程序碰到需要处理多重判断的一个逻辑,一般正确的写法是:

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
原文地址:https://www.cnblogs.com/everfight/p/and_or_else.html