if a[start] <= target < a[mid]:
по существу [*] совпадает с
if a[start] <= target and target < a[mid]:
(Если это правда, из этого следует, что a[start] < a[mid]
, поскольку <=
должен быть транзитивным.)
[*] Есть одна тонкость, которая не относится к вашему делу, но о которой стоит знать. Связанная форма оценивает среднее выражение только один раз, тогда как расширенная форма оценивает его дважды. Это может иметь значение, если среднее выражение является дорогостоящим для вычисления или имеет некоторые побочные эффекты (такие как печать чего-либо на экране).
Соответствующие документы: https://docs.python.org/3/reference/expressions.html#comparisons