Also versuche ich Halbierung zu verstehen. Ich verstehe, dass es sich um einen nützlichen, rechensparenden Algorithmus handelt, ich bekomme das allgemeine Konzept dessen, was es tut und wie es es macht. Was ich nicht bekommen, beinhaltet diese Suchfunktion, die es verwendet, genommen von https://docs.python.org/2/library/bisect.htmlBisektionsindexsuche - warum mit len (a) vergleichen?
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
Könnte jemand bitte genau für mich brechen, was die i! = Len (a) Teil der, wenn Linie tut ? Ich kann es lesen - es überprüft, ob der Einfügungsindex von x der Länge der Liste a entspricht - aber ich kann es nicht verstehen. Warum ist es notwendig? Was würde ohne es passieren?
Ich folge, sagen wir mal x hat einen Insertionsindex größer als die Länge von a, dann x offensichtlich nicht in einem gibt es spuckt den Fehler aus - aber wenn das der Fall ist dann die a [i] == x check stolpert es trotzdem ...?
Danke!
Um einen Indexfehler zu vermeiden i, e' [1,2,3] [3] ' –