对于排序列表,如何找到与给定数字接近的最小数字?
例如,
mysortedList = [37, 72, 235, 645, 715, 767, 847, 905, 908, 960]
我如何才能找到这700小于或等于最大的元素迅速?(如果我有1000万个元素,那么线性搜索将很慢)。在此的示例答案是645。
您可以使用以下bisect
模块:
import bisect
data = [37, 72, 235, 645, 715, 767, 847, 905, 908, 960]
location = bisect.bisect_left(data, 700)
result = data[location - 1]
这是标准库中的一个模块,它将使用二进制搜索来找到所需的结果。根据您需要的确切值,您也可以使用bisect_right
代替bisect_left
。
这比遍历列表更快,因为二进制搜索算法可以跳过不包含答案的部分数据。当已知要对数据进行排序时,这非常适合查找最接近的数字。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句