所以我试图理解二分法。我知道它是一种有用的、节省计算的算法,我了解了它的作用以及它如何做的一般概念。我没有得到涉及使用它的这个搜索功能,取自https://docs.python.org/2/library/bisect.html
from bisect import bisect_left
def index(a, x):
'Locate the leftmost value exactly equal to x'
i = bisect_left(a, x)
if i != len(a) and a[i] == x:
return i
raise ValueError
有人可以为我分解 if 行的i != len(a)部分的作用吗?我可以阅读它 - 它检查 x 的插入索引是否等于列表 a 的长度 - 但我无法理解。为什么有必要?没有它会怎样?
我遵循这一点,假设 x 的插入索引大于 a 的长度,那么 x 显然不存在于 a 中,因此它会发出错误 - 但如果是这种情况,则a[i] == x会检查行程无论如何它...?
谢谢!