我有两个列表,例如:
A=[1,2,3,4]
B=[3,6,7,8,9,10]
我想比较这两个列表,如果至少有一个共同的元素,则返回True,否则返回False。目前我正在使用以下内容:
Set(A)&Set(B)
然而,这不是用于此目的的最有效方式。我有超过200万套,每个需要比较10K以上的元素。我真的不需要比较所有元素。
在Python中是否有任何内置函数或我是否需要为它编写自定义函数?
答案 0 :(得分:0)
您可以连接列表,转换为set,并检查是否存在:
A=[1,2,3,4]
B=[3,6,7,8,9,10]
def check_existence(a, b):
return bool([i for i in set(a+b) if i in set(a) and i in set(b)]
print(check_existence(A, B))
答案 1 :(得分:0)
我认为关键是你需要改进数据结构,以便在获取或接收数据时存储数据。
例如,使用dict存储它们,key =数组中的数字,值为A,B或(A和B),A = 1,B = 2,A和B = 3。
然后你可以找到检查是否有值= 3,你可以返回True。
如果您可以保持值的顺序,那将是很好的,因为您只获得最大值,如果它是3,则返回True,即O(1)。