【问题标题】:Compare to multiple values in an if statement [duplicate]比较if语句中的多个值[重复]
【发布时间】:2015-04-01 00:07:17
【问题描述】:

我将需要多个 if 语句来比较相同的几个元素,并且想知道我是否可以按照这些思路做一些事情来使代码更简洁。

例如这个函数。

def test(num): 

    a = [1, 2, 3]

    if num == a : 
        return True

    else : 
        return False

会回来

>>>test(1)
True
>>>test(2)
True
>>>test(5)
False

不必为123 编写单独的 if 语句。

【问题讨论】:

    标签: python if-statement python-3.x


    【解决方案1】:

    使用in 运算符

    if num in a : 
    

    def test(num): 
        a = [1, 2, 3]
        if num in a : 
            return True
        else : 
            return False
    

    一种变通方法是(如 Padraic 所建议的)

     def test(num): 
            a = [1, 2, 3]
            return num in a
    

    这会起作用,因为 in 运算符比较 LHS 是否存在于 RHS 中并分别返回一个布尔值。

    这也是可能的

    test = lambda x:  num in [1, 2, 3]
    

    这一切都在一行中!

    【讨论】:

    • 谢谢!我不敢相信我现在没想到
    • 那么return (num in [1, 2, 3]) :)
    • @Bhargav,你不需要括号。
    • @PadraicCunningham 但我需要解释! :P
    【解决方案2】:

    您可以使用in,或检查index 并捕获错误:

    num in a 将检查项目num 是否在列表a 中。

    >>> 1 in [1, 2, 5]
    True
    >>> 3 in [1, 2, 5]
    False
    >>> 100 in range(101)
    True
    

    try 获取索引,except 获取IndexError

    def isIn(item, lst):
        try:
            lst.index(item)
            return True
        except ValueError:
            return False
        return False
    
    >>> isIn(5, [1, 2, 5])
    True
    >>> isIn(5, [1, 2, 3])
    False
    

    【讨论】:

      猜你喜欢
      • 2016-05-09
      • 2018-08-13
      • 2010-09-13
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      相关资源
      最近更新 更多