Does this do what I think it does?
assert 1 < 2 < 3
I couldn't find any reference to this in the docs but I saw it in a high rep answer.
It seems to work but it could be luck, like the leftmost resolves to True, then True is used in the other.
I did a few tests and it always work as expected, but I'd like to find a source (a doc) stating explicitly that it is intended.
>>> 1<2<3<4<5
True
>>> 1<2<7<4<5
False
>>> 1<2<3>2<5
True
This rules out the "leftmost first" hypothesis:
>>> 1<3<2
False
>>> (1<3)<2
True
                Comparison operators — operators that compare values and return true or false . The operators include: > , < , >= , <= , === , and !== .
A comparison operator compares two values and returns a boolean value, either True or False . Python has six comparison operators: less than ( < ), less than or equal to ( <= ), greater than ( > ), greater than or equal to ( >= ), equal to ( == ), and not equal to ( != ).
There are six main comparison operators: equal to, not equal to, greater than, greater than or equal to, less than, and less than or equal to.
This is documented in detail in the Expressions chapter of the documentation:
Comparisons can be chained arbitrarily, e.g.,
x < y <= zis equivalent tox < y and y <= z, except thatyis evaluated only once (but in both caseszis not evaluated at all whenx < yis found to be false).Formally, if a, b, c, ..., y, z are expressions and op1, op2, ..., opN are comparison operators, then
a op1 b op2 c ... y opN zis equivalent toa op1 b and b op2 c and ... y opN z, except that each expression is evaluated at most once.Note that
a op1 b op2 cdoesn’t imply any kind of comparison between a and c, so that, e.g.,x < y > zis perfectly legal (though perhaps not pretty).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With