在python中查找列表中另一项最接近的两个元素的最快方法
输入是元素和外部项的排序列表。例如:在python中查找列表中另一项最接近的两个元素的最快方法,python,list,Python,List,输入是元素和外部项的排序列表。例如: list_ = [0, 3.5, 5.8, 6.2, 88] item = 4.4 找出列表项中哪两个元素介于两者之间的最快方法是什么?例如,在本例中,这两个数字分别为3.5和5.8。有什么想法吗?因为输入是经过排序的,所以从算法上讲,最好使用对分模块 您想要的项目位于索引左对分(列表,项目)和左对分(列表,项目)-1 这应该会在O(logN)搜索中给出一个结果——从算法的角度来看,它不会比这个结果好多少。您可以使用函数来获取项的索引 list_, ite
list_ = [0, 3.5, 5.8, 6.2, 88]
item = 4.4
找出
列表
项
中哪两个元素介于两者之间的最快方法是什么?例如,在本例中,这两个数字分别为3.5和5.8。有什么想法吗?因为输入是经过排序的,所以从算法上讲,最好使用对分
模块
您想要的项目位于索引左对分(列表,项目)
和左对分(列表,项目)-1
这应该会在O(logN)
搜索中给出一个结果——从算法的角度来看,它不会比这个结果好多少。您可以使用函数来获取项的索引
list_, item = [0, 3.5, 5.8, 6.2, 88], 4.4
from bisect import bisect
print bisect(list_, item)
# 2
记住您的列表
必须进行排序,才能使用对分
模块中的函数。我会使用numpy:
from numpy import *
x = array([0, 3.5, 5.8, 6.2, 88])
item = 4.4
i= argmin(abs(x-item))
print(i)
from numpy import *
x = array([0, 3.5, 5.8, 6.2, 88])
item = 4.4
i= argmin(abs(x-item))
print(i)