2016-11-01 56 views
-4

我正在使用bisect來查找第一次出現的數據點> -6,但是當我運行我的腳本時,它只發現第二個(也是最後一個)發生。平分線怎麼沒找到我的意圖?

import bisect 

    kk = [-9, -6, -4, -6, -8, -8, -7, -7, -6, -6, -5] 

    first = bisect.bisect(kk, -6) 
    print(first) 

這段代碼輸出「10」,但應該是「2」。誰能告訴我爲什麼? 對於一個愚蠢的問題,我很抱歉 - 我是很新的Python!

+5

'bisect'執行二進制搜索,因此它假定您的列表已排序。你的沒有排序。 – Blender

回答

1

由於the documentation說,(強調):

該模塊提供了支持維持在有序列表

你要排序列表,然後才能bisect做任何事。

+0

好吧 - 那麼如何才能找到第一次數據達到閾值的索引? – Blochio

+0

@Blochio或者對你的列表進行排序,或者做一個線性搜索 –

+0

@Blochio:我不確定你認爲'bisect'是幹什麼的,或者你爲什麼在這裏使用它。如果你有關於如何做某事的問題(比如如何在列表中找到第一個給定值),那麼直接提出這個問題,而不是詢問'bisect'。 – BrenBarn