假设我们有两个长度相等的数组:
arr1 = (21, 2, 3, 5, 13)
arr2 = (10, 4.5, 9, 12, 20)
arr1
中哪个变量与arr2
中的变量相等/最接近?
看着这两个列表,我们可以很容易地说出距离最近的数字是4.5和5。我试图实现一个函数,在给定两个列表的情况下返回两个最接近的值,它在上面的例子中有点起作用,但这只是勉强算是一个解决方案,因为它不是最优的。当我们稍微更改数组时,您可以轻松检查到该函数失败:
arr1 = (21, 2, 3, 5, 13)
arr2 = (10, 4.5, 9, 12, 18)
这个函数返回的值是13和18。
以下是该函数的代码:
def get_nearest(arr1, arr2):
lr = [[0, 0, 0]]
for x1 in arr1:
for x2 in arr2:
r = (x1 / x2 % (x1 + x2))
print x1, x2, r
if r <= 1 and r >= lr[0][2]:
lr.pop()
lr.append([x1, x2, r])
return lr
你能想出更好的吗?