これは私が思うことをしますか?そうだと私には思えます。確かにお願いしています。
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
これは私が思うことをしますか?そうだと私には思えます。確かにお願いしています。
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
アクセスは1回だけ実行されるため、これは同等ですが、等しくはありません。Pythonは関係演算子を自然にチェーンします(in
とを含むis
)。
わずかな違いを示す最も簡単な方法:
>>> print(1) == print(2) == print(3)
1
2
3
True
>>> print(1) == print(2) and print(2) == print(3)
1
2
2
3
True
print()
常にを返すので、ここでsNone
を比較するNone
だけなので、結果は常にTrue
ですが、2番目のケースでprint(2)
は2回呼び出されるため2
、出力に2つのsが取得され、最初のケースでは結果が使用されます。両方の比較で、1回だけ実行されます。
副作用のない純粋関数を使用する場合、2つの操作はまったく同じになりますが、それ以外の点では少し異なります。
はい。ただし、比較が連鎖している場合、共通の式は1回評価され、使用している場合and
は2回評価されます。どちらの場合も、最初の比較がfalseの場合、2番目の比較は評価されません。ドキュメントの例:
比較は任意に連鎖させることができます。たとえば、x <y<=zはx<yおよびy<=zと同等ですが、yは1回だけ評価されます(ただし、どちらの場合も、x <yが見つかった場合、zはまったく評価されません。偽であるために)。
他の人が答えたように、答えはイエスです。ただし、括弧を追加することに注意してください。例えば:
>>> 1 == 2 == 0
False
>>> (1 == 2) == 0
True
2番目のケースでは、Pythonでブール値と整数の比較が可能であるため、に(1 == 2)
評価されてからFalse
、にFalse == 0
評価されます。True
同じく:
>>> 0 == 0 == 1
False
>>> (0 == 0) == 1
True
はい。それで合っています ....
あなたもすることができます
5 > x > 1
また
1 < x < 5
セットコレクションを使用して、同等性をテストできます
>>> a, b, c = 2, 2, 2
>>> len({a, b, c}) == 1
True
>>> a, b, c = 2, 2, 3
>>> len({a, b, c}) == 1
False
はい、Pythonの内部では、比較演算子はtrueもfalseも返しません。代わりに、「比較結果」オブジェクトを返します(クラス名を思い出せません。かなり過去のものです)。このオブジェクトは_ lt _、 _ gt_を提供します。 、_ eq _ etcなどのメソッドを使用して、最終結果に対して「責任」を持ちます(「比較結果」は、ステートメントの最後でTrueまたはFalseにキャストされます)。これは、Pythonが提供するセマンティック制御の魔法です:)
==と!=をチェーンすることもできるようです:
>>> a = b = c = 1
>>> a == b == c
True
>>> a == b == c == 1
True
>>> a == b == c == 2
False
>>> a == b == c != 2
True
>>> a == b == c != 1
False
>>>