Python中 a < b < c之類的語句到底是怎麼回事?
一開始以為是左右依次算。想想又覺得不對,因為如果這樣就變成了布爾值和最後一個值比較,明顯不符合實際情況。
實例:```&>&>&> -1 &< 0.5 &< 0.7
True&>&>&> (-1 &< 0.5 )&< 0.7# 這裡True &< 0.7,很自然的結果是FalseFalse
&>&>&> 3 &< 4 &< 5True&>&>&> 3 &< (4 &< 5)# 這裡3 &< True,很自然的結果也是FalseFalse
```所以這是固定用法???去網上搜也不知道用什麼關鍵詞,搜出來的東西沒用......
沒有去找文檔,按照平時操作的經驗說一下
首先是描述中的舉例,False的原因不是因為布爾類型和整數、浮點數不能比較,而是True的值為1,False的值為0,導致數值比較錯誤:
&>&>&> -1 &< 0.5 &< 0.7
True
&>&>&> (-1 &< 0.5 )&< 0.7
# 這裡相當於1 &< 0.7,很自然的結果是False
False
&>&>&> 3 &< 4 &< 5
True
&>&>&> 3 &< (4 &< 5)
# 這裡相當於3 &< 1,很自然的結果也是False
False
&>&>&> True&<2
True
&>&>&> False&
再說運算順序,我傾向於認為這是把連續比較拆分成若干個and,只要中間遇到一個False就中斷返回False:
&>&>&> 1&<3&>2
True
&>&>&> 1&<10&>2&<9&>3&<8&>4&<7&>5&<6
True
是不是把字元串自動解析成兩部分,3 &< 4 4 &< 5?
https://docs.python.org/3/reference/expressions.html#comparisons
Comparisons can be chained arbitrarily, e.g., x
&<
y
&<=
z
is equivalent to x
&<
y
and
y
&<=
z
, except that y
is evaluated only once (but in both cases z
is not evaluated at all when x
&<
y
is found to be false).
Formally, if a, b, c, …, y, z are expressions and op1, op2, …, opN are comparison operators, then a
op1
bop2
c
...
y
opN
z
is equivalent to a
op1
b
and
b
op2
c
and
...
y
opN
z
, except that each expression is evaluated at most once.
https://docs.python.org/3/library/stdtypes.html#truth-value-testing
Operations and built-in functions that have a Boolean result always return 0
or False
for false and 1
or True
for true, unless otherwise stated. (Important exception: the Boolean operations or
and and
always return one of their operands.)
高贊回答容易引起誤解,下面那位同學貼出的文檔是正確的。
推薦閱讀:
※哪裡有免費的python3教程啊?最好是有例子的視頻教學
※自學 Python 用記事本呢?還是有別的編輯器?
※編程零基礎,如何學習Python?
※如何高效自學編程()?