有效匹配两个数组中存在的所有数字[Python]

时间:2016-09-11 15:19:05

标签: python-2.7

我想匹配两个数组中存在的数字(长度不相等),如果匹配则将它们输出到另一个数组。数字是浮点数。

目前我在Python中有一个工作程序,但是当我为大型数据集运行它时它很慢。我所做的是两个嵌套for循环。

第一个嵌套的for循环遍历array1并检查array2中的任何数字是否在数组1中。如果匹配,我将其写入名为arrayMatch1的数组。

然后我检查array2并查看是否与arrayMatch1匹配。并将最终结果输出到arrayFinal。

arrayFinal将包含array1,array2中的所有数字。

我的问题: 两个嵌套的for循环给我一个复杂的O(n ^ 2)。此方法适用于数组长度为25000的数据集,但如果更大则减慢速度。如何才能提高效率。数字是浮点数,并且始终采用这种格式######。###

我想加快我的程序,但由于简单,继续使用Python。有没有更好的方法来找到两个数组之间的匹配?

2 个答案:

答案 0 :(得分:1)

为什么不找到两个名单的部分?

a = [1,2,3,4.3,5.7,9,11,15]
b = [4.3,5.7,6.3,7.9,8.1]

def intersect(a, b):
    return list(set(a) & set(b))

print intersect(a, b)

输出:

  

[5.7,4.3]

来自this question.

答案 1 :(得分:0)

所以你基本上要做的就是找到2个列表的交集(逻辑上正确的术语)。

首先,您需要消除列表本身的重复形式,set是很好的方法,然后您可以&这些列表,您将会很高兴。

a = [23.3213,23.123,43.213,12.234] #List First
b = [12.234,23.345,34.224] #List Second
def intersect(a, b):
    return list(set(a) & set(b))

print intersect(a, b)