2012-12-10 37 views
28

這是否做我認爲它的作用?在我看來,是的。我要求確定。測試三個值的相等性

if n[i] == n[i+1] == n[i+2]: 
    return True 

這些是否相等?

if n[i] == n[i+1] and n[i+1] == n[i+2]: 
    return True 
+2

這是正確的。 –

+0

重複的:http://stackoverflow.com/questions/13792604/usage-of-the-operator-for-three-objects/13792615#13792615 –

回答

25

它是等效但不等於,因爲訪問是僅執行一次。 Python鏈關係運算符自然(包括inis)。

,顯示略有差異的最簡單方法:

>>> print(1) == print(2) == print(3) 
1 
2 
3 
True 
>>> print(1) == print(2) and print(2) == print(3) 
1 
2 
2 
3 
True 
+3

值得注意的是,它們並不相同,因爲它可以設計出一個(n'是在訪問後改變'n [i + 1]'的值的對象)。編輯:我已經編輯了一個例子來顯示不同之處。 –

3

是你是正確的....

,你也可以做

5 > x > 1 

1 < x < 5 
6

是的,但是,當比較ns被鏈接在的常見表達被評估一次,當使用and時被評估兩次。在兩種情況下,第二比較不評估如果第一個是假的,例如從docs

比較可以被任意鏈的,例如,x <ÿ< = z是等效 於x < y和y < = z,不同之處在於y只評估一次(但在 的情況下,當x < y被發現爲假時,根本不評估z)。

2

是的,在蟒蛇的內部比較運營商收益也真沒有假的,他們直接返回「比較結果」對象(不記得類名,這是很在過去的),而這個對象提供了_ LT __ GT __ 當量 _等等等等的方法和成爲最終的結果 '負責'(和 '比較結果' 被鑄造爲True或False在端聲明)。這是python爲你提供的語義控制的神奇功能:)

相關問題