2016-11-01 44 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