if a[start] <= target < a[mid]
是否与a[start] <= target and target<a[mid] and a[start] < a[mid]
相同?(我认为不是,但从视觉上看两者看起来是一样的)这是如何在引擎盖下工作的?找了这么久,却找不到答案。
最佳答案
这个
if a[start] <= target < a[mid]:
本质上是[*]和
if a[start] <= target and target < a[mid]:
(如果为true,则会出现
a[start] < a[mid]
,因为<=
应该是可传递的。)[*]有一个微妙之处不适用于您的案例,但值得了解。链式表单只计算一次中间表达式,而展开式表单计算两次。如果中间表达式的计算成本很高或有一些副作用(例如将某些内容打印到屏幕上),这可能很重要。
相关文件:https://docs.python.org/3/reference/expressions.html#comparisons
关于python - 在python中,a <b <c是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58355953/