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] 删除。
我来说两句