Python列表有效比较

时间:2017-12-30 16:28:23

标签: python list comparison

我有两个列表,例如:

A=[1,2,3,4]
B=[3,6,7,8,9,10]

我想比较这两个列表,如果至少有一个共同的元素,则返回True,否则返回False。目前我正在使用以下内容:

Set(A)&Set(B)

然而,这不是用于此目的的最有效方式。我有超过200万套,每个需要比较10K以上的元素。我真的不需要比较所有元素。

在Python中是否有任何内置函数或我是否需要为它编写自定义函数?

2 个答案:

答案 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)。