zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    day74作业
    day072作业
    Serializer类
    day067作业
    day066作业
    day065作业
    django
    jQuery
    JavaScript
    mediaplayer state
  • 原文地址:https://www.cnblogs.com/everfight/p/and_or_else.html
Copyright © 2011-2022 走看看