在对数时间Python中的有序列表中的位置元素

时间:2012-04-01 15:31:13

标签: python list find position locate

我有一个排序列表,我需要在该列表中定位一个元素,使得前一个元素是< =并且列表中的下一个元素是> (列表是浮点数列表)

我需要返回元素的位置< =即前一个元素

我如何在对数时间内实现这一点。我想使用类似于二进制seacrh的方法但无法使其工作

任何帮助将不胜感激

P.S。一个例子是:如果列表是

testlist=[0.0, 0.25, 0.5, 0.75, 1.0]

我运行0.27的功能 该函数将返回1(0.25的位置) 如果我以0.5运行它将返回2

1 个答案:

答案 0 :(得分:3)

有一个专用的二进制搜索模块:bisect

import bisect

testlist=[0.0, 0.25, 0.5, 0.75, 1.0]
print bisect.bisect(testlist, .27) - 1
## 1