2016-08-19 177 views
-2

我有我也有簡單的代碼看起來像:元組比較蟒蛇

>>> a = ('1', '2', '3', '4', '5') 
>>> b = ('2', '6') 
>>> 
>>> def comp(list1, list2): 
...  for val in list1: 
...   if val in list2: 
...    return True 
...  return False 
... 
>>> print comp(a, b) 
True 

請幫助我瞭解爲什麼我收到「真」?我如何找到兩個元組之間的完全匹配?

謝謝。

+4

在2的a中,函數被短路並返回True。說「找到完全匹配」是不明確的,你的意思是一個「交叉點」,有沒有保存順序? – YiFei

+1

你能描述一下你的預期結果嗎?你想檢查一個是否是另一個的子集?你想知道兩個元組是否包含完全相同的元素? – CoryKramer

+3

當'val'爲''2''時,條件'if val in list2'將匹配,並且該函數將立即返回true,因爲這是您寫的內容。如果你想要別的東西,你需要更清楚地描述。 – khelwood

回答

1

語句return語句退出函數,可選地將表達式傳回給調用者。

所以,如果你寫:

a = ('1', '2', '3', '4', '5') 
b = ('6', '2') 

def comp(list1, list2): 
    for val in list1: 
     if val in list2: 
      return True 
    return False 
print comp(a, b) 

的答案是False。 因此,解決方案:

a = ('1', '2', '3', '4', '5') 
b = ('2', '3') 

def comp(list1, list2): 
    for val in list1: 
     if val not in list2: 
      return False 
    return True 

print comp(b, a) # This will written True 
print comp(a, b) # This will written False 
+1

哈沙,謝謝你的幫助! – Zak

0

您應該稍微更改您的代碼。這可能會有所幫助。

def comp(list1, list2): 
    for val in list1: 
     if val not in list2: 
      return False 
    return True