2015-03-31 59 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