2017-09-17 67 views
0

示例:如果a = [1,2]和b = [1],則輸出爲2,因爲它在兩個列表這可以進一步優化:找到唯一元素(元素在兩個列表中只出現一次)

假設只有一個這樣的數字。

唯一編號可以在兩個列表中的任何一箇中。

def find_me(x, y): 
    for element in x: 
     if element not in y: 
      return element 
    for element in y: 
     if element not in x: 
      return element 

first_list = [14, 27, 1, 4, 2, 50, 3, 1] 
second_list = [2, 4, -4, 3, 1, 1, 14, 27, 50] 

print find_me(first_list,second_list) 

#output : -4 

我用這段代碼得到預期的結果。

我想知道這是否可以進一步優化。

回答

0

隨着list.count()功能:

first_list = [14, 27, 1, 4, 2, 50, 3, 1] 
second_list = [2, 4, -4, 3, 1, 1, 14, 27, 50] 

merged = first_list + second_list 
unique_item = [i for i in merged if merged.count(i) == 1] 
print(unique_item) # [-4] 

或者使用設置對象:

unique_item = set(first_list)^set(second_list) 
print(unique_item) # {-4} 
+0

這是否解決問題更快? –

+0

@MathewAlex,你沒有提到**速度優化**在你的問題。做一些基準 – RomanPerekhrest

+0

是的。但如果我想更快解決問題,那麼你的代碼是我正在尋找的那個? –

相關問題