在Python中,如何在排序列表中找到第一个值的索引大于阈值?

在Python中,如何在排序列表中找到第一个值的索引大于阈值?

我可以想到几种实现此目的的方法(线性搜索,手写二分法,..),但是我正在寻找一种干净且合理有效的方法。由于这可能是一个非常普遍的问题,所以我相信经验丰富的SOers可以为您提供帮助!

谢谢!

回答:

看一看开张。

import bisect

l = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

bisect.bisect(l, 55) # returns 7

与线性搜索进行比较:

timeit bisect.bisect(l, 55)

# 375ns

timeit next((i for i,n in enumerate(l) if n > 55), len(l))

# 2.24us

timeit next((l.index(n) for n in l if n > 55), len(l))

# 1.93us

以上是 在Python中,如何在排序列表中找到第一个值的索引大于阈值? 的全部内容, 来源链接: utcz.com/qa/430032.html

回到顶部