2015-10-06 150 views

回答

3

您可以使用any

any(x in set(b) for x in a) 

這是短期寫的,但正如喬恩正確指出將在a創建的每個元素的新set(b),下面的線將避免:

sb = set(b) 
any(x in sb for x in a) 

業績將改善,如果b是最大的數組(相對於a):

(smaller,bigger) = sorted([a,b], key=len) 
sbigger = set(bigger) 
any(x in sbigger for x in smaller) 
+4

這將會把'bool(set(first)&set(second))'設置爲'bool(set *非常高效 –

+0

@JonClements同意,最好將'set(b)'保存在一個變量中。 –

1
def lists_overlap(a, b) 
    for i in a: 
     if i in b: 
      return True 
    return False 
+0

這有一個非常討厭的最壞情況和平均運行時間... –

3

我會去。

def doArraysIntersect(array1, array2): 
    return bool(set(array1) & set(array2)) 
相關問題