2015-10-06 76 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)) 
相关问题