2012-04-01 40 views
3

我有一個排序列表,我需要在該列表中定位一個元素,以便前一個元素是< =,列表中的下一個元素是>(該列表是列表浮點數對數時間的有序列表中的位置元素Python

的),我需要返回的元素的位置,也就是說,< =即前一個元素

我如何能在對數時間實現這一點。我想用類似二進制seacrh的方法,但不能讓它的工作

任何幫助,將不勝感激

附:一個例子是:如果列表是

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

和我運行爲0.27 該函數的函數將返回1 (0.25的位置),並且如果我運行它爲0.5,它會返回2

+4

「無法得到它的工作」 - 你嘗試過什麼? – Kimvais 2012-04-01 15:37:47

+0

如果這是家庭作業,您應該將其標記爲避免類似於使用「bisect」模塊的答案。 – 2012-04-01 22:26:05

回答

3

有二進制搜索的專用模塊:bisect

import bisect 

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

謝謝,答案奏效,現在我可以繼續我的代碼的其餘部分 – 2012-04-02 17:46:11

相關問題