Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中查找列表中另一项最接近的两个元素的最快方法_Python_List - Fatal编程技术网

在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)