在Python中,如何找到排序列表中第一个大于阈值的值的索引?
我可以想到几种方法来做到这一点(线性搜索,手写二分法,..),但我正在寻找一种干净且相当有效的方法来做到这一点。由于这可能是一个非常常见的问题,我相信经验丰富的 SOers 可以提供帮助!
Thanks!
看一下bisect http://docs.python.org/library/bisect.html.
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)