如何在两个列表之间找到最接近的超过数字?

时间:2015-06-30 17:59:11

标签: python-2.7 multidimensional-array

我有两个数字列表A列表和列表B

我想将列表A中的每个数字映射到列表B中的数字。该数字是列表B中列表A超出的最接近的数字。

例如,如果我在列表A中有数字5并且列表B中有数字3和6,那么我希望数字5映射到3。

我意识到我可以通过将列表A中的每个数字与列表B中的每个数字之间的差异然后建立索引来实现这一点,但是我的列表A和列表B非常长,并且想知道是否有更有效的方法走吧。

谢谢!

1 个答案:

答案 0 :(得分:0)

你说你正在寻找比获得差异更快的东西。如果您查看this答案,该答案计算O(n)中单个项目的最接近值,则您的列表只需O(n^2),这非常快。您的解决方案如下所示:

>>> A = [100, 7, 9]
>>> B = [2, 5, 6, 8, 123, 12]
>>> [min(A, key=lambda x: 2**16 if x > y else abs(x-y)) for y in B]
[12, 6, 8]

2**16有点脏,但完成了工作。

相关问题