[解決済み] (1 in [1,0] == True) はなぜ False と評価されるのでしょうか?
2022-04-27 04:21:09
質問
の答えを見ていたら この質問 自分の回答が理解できていないことがわかった。
これがどのように解析されているのか、よく理解できません。なぜ2番目の例はFalseを返すのでしょうか?
>>> 1 in [1,0] # This is expected
True
>>> 1 in [1,0] == True # This is strange
False
>>> (1 in [1,0]) == True # This is what I wanted it to be
True
>>> 1 in ([1,0] == True) # But it's not just a precedence issue!
# It did not raise an exception on the second example.
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
1 in ([1,0] == True)
TypeError: argument of type 'bool' is not iterable
よろしくお願いします。私は本当に明白な何かを見逃しているに違いないと思います。
リンク先の重複と微妙に違うと思うのですが。
Pythonで0 < 0 == 0という式はなぜFalseを返すのですか? .
どちらの質問も、式に対する人間の理解力に関係するものです。この表現を評価する方法は、(私の中では)2通りあるように思えました。もちろん、どちらも正しいとは言えませんが、私の例では、最後の解釈は不可能です。
を見てみると
0 < 0 == 0
は、それぞれの半分が評価され、式として意味をなすことが想像できます。
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
ということで、なぜこのリンクが評価されるのかに答えます。
False
:
>>> 0 < 0 == 0
False
しかし、私の例では
1 in ([1,0] == True)
は表現として意味をなさないので、2つの(確かに間違った)解釈があるのではなく、1つしかないと思われます。
>>> (1 in [1,0]) == True
解決方法は?
Pythonはここで実際に比較演算子の連鎖を適用しています。 式は次のように変換されます。
(1 in [1, 0]) and ([1, 0] == True)
というのは、明らかに
False
.
これは、次のような表現でも起こります。
a < b < c
に変換されます。
(a < b) and (b < c)
(評価なし
b
を2回繰り返す)。
をご覧ください。 Python言語ドキュメント をご覧ください。
関連
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] not(True) in [False, True]」はなぜFalseを返すのですか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
python string splicing.join()とsplitting.split()の説明
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】ValueError: xとyは同じサイズでなければならない