В Python, что означает - PullRequest
       69

В Python, что означает

2 голосов
/ 12 октября 2019

Является ли if a[start] <= target < a[mid] таким же, как a[start] <= target and target<a[mid] and a[start] < a[mid]? (Я думаю, что нет, но визуально это выглядит так, как будто они одинаковы) Как это работает под капотом? Искал на SO, но не смог найти ответ.

1 Ответ

5 голосов
/ 12 октября 2019

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

...