だから私は二分法を理解しようとしています。私は、それが便利で計算を節約するアルゴリズムであることを理解しています。それが何をどのように行うかについての一般的な概念を理解しています。私が得られないのは、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チェックがトリップします。とにかくアップ…?
ありがとう!