查找在Python中列出最接近特定值的项目

fri*_*hax 3 python nearest-neighbor bins

我有一个排序的浮动列表y,以及未排序的浮动列表x.

现在,我需要找出它x之间的每个元素y,最好是索引y.例如,如果

y=[1,2,3,4,5]

x[0]=3.5 
Run Code Online (Sandbox Code Playgroud)

我需要为指数输出0x(2,3),因为3.5是之间y[2]y[3].

基本上,我认为它与看到ybin边缘和排序x到那些箱子是一样的.

你最容易做到的是什么?

jon*_*rpe 5

我会使用zip(itertools.izip在Python 2.x中)来完成这个:

from itertools import islice#, izip as zip # if Python 2.x

def nearest_neighbours(x, lst):
    for l1, l2 in zip(lst, islice(lst, 1, None)):
        if l1 <= x <= l2:
            return l1, l2
    else:
        # ?
Run Code Online (Sandbox Code Playgroud)

用法示例:

>>> nearest_neighbours(3.5, range(1, 6))
(3, 4)
Run Code Online (Sandbox Code Playgroud)

你必须决定你想要发生什么,如果x不在任何一对之间lst(即替换# ?!)如果你想要索引(虽然你的例子没有使用它们),可以玩enumerate.