在python的排序列表中索引元素的最快方法?

姓名

list.index(elem)就我所知,Python的列表具有一个函数该函数可以在O(n)时间内运行。但是,如果我可以保证列表可以排序,这仍然是获取元素索引的最佳方法吗?

二进制搜索会更快地返回索引吗?另外,是否有一种方法可以强制python标准库对列表中元素的索引进行二进制搜索?

奥拉西

是的,二进制搜索通常会更快。不可以,标准库index功能对此没有任何选择。

另一个答案具有用于二进制搜索的代码:

from bisect import bisect_left

def binary_search(a, x, lo=0, hi=None):   # can't use a to specify default for hi
    hi = hi if hi is not None else len(a) # hi defaults to len(a)   
    pos = bisect_left(a,x,lo,hi)          # find insertion position
    return (pos if pos != hi and a[pos] == x else -1) # don't walk off the end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章