2015-03-31 42 views
0

即时需要多个if语句来比较相同的几个元素,并且想知道是否有这些行可以让代码更清晰和更简单。与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 

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

回答

2

使用in操作

if num in a : 

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

周围会(由帕德里克建议)工作

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

这工作,因为,将在运营商比较LHS是否存在于RHS中并分别返回布尔值。

而且这是可能的

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

这是所有在一个单一的线!

+1

'返回NUM了' – 2015-03-31 15:50:02

+0

感谢!我不相信我现在没有想到 – iotaa 2015-03-31 15:52:03

+0

以及'return(num in [1,2,3]):) :) – 2015-03-31 15:52:25

0

您可以使用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获得指标,并exceptIndexError

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