[解決済み] "x not in y "または "not x in y "です。
2022-10-18 11:13:26
質問
メンバーシップのテストを行う場合、以下のような方法があります。
x not in y
あるいは、その代わりに
not x in y
この式には、以下のような様々なコンテキストが考えられます。
x
と
y
. それは例えば、部分文字列のチェック、リストメンバーシップ、dictキーの存在などのためかもしれません。
- 2 つの形式は常に同等ですか?
- 望ましい構文はありますか?
どのように解決するのですか?
いつも同じ結果になってしまいます。
実際には
not 'ham' in 'spam and eggs'
は、"in" の操作とその結果の否定ではなく、単一の "not in" の操作を実行するために特殊なケースに入れられたように見えます。
>>> import dis
>>> def notin():
'ham' not in 'spam and eggs'
>>> dis.dis(notin)
2 0 LOAD_CONST 1 ('ham')
3 LOAD_CONST 2 ('spam and eggs')
6 COMPARE_OP 7 (not in)
9 POP_TOP
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
>>> def not_in():
not 'ham' in 'spam and eggs'
>>> dis.dis(not_in)
2 0 LOAD_CONST 1 ('ham')
3 LOAD_CONST 2 ('spam and eggs')
6 COMPARE_OP 7 (not in)
9 POP_TOP
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
>>> def not__in():
not ('ham' in 'spam and eggs')
>>> dis.dis(not__in)
2 0 LOAD_CONST 1 ('ham')
3 LOAD_CONST 2 ('spam and eggs')
6 COMPARE_OP 7 (not in)
9 POP_TOP
10 LOAD_CONST 0 (None)
13 RETURN_VALUE
>>> def noteq():
not 'ham' == 'spam and eggs'
>>> dis.dis(noteq)
2 0 LOAD_CONST 1 ('ham')
3 LOAD_CONST 2 ('spam and eggs')
6 COMPARE_OP 2 (==)
9 UNARY_NOT
10 POP_TOP
11 LOAD_CONST 0 (None)
14 RETURN_VALUE
最初はいつも同じ結果を出すと思っていたのですが、その
not
は単に優先順位の低い論理否定演算子であり、これを
a in b
には他のブール式と同じように簡単に適用できるのに対し
not in
は利便性と明瞭性のために別の演算子になっていました。
上の分解で明らかになりました! それは、どうやら
not
は明らかに論理的否定演算子であるのに対して
not a in b
という形式は特殊なケースに入るので、実際には一般的な演算子を使用しているわけではありません。このため
not a in b
と文字通り同じ式になります。
a not in b
と同じで、単に同じ値になる式というだけではありません。
関連
-
[解決済み] Pythonで複数行のdictをフォーマットする適切な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] Pythonに "not equal "演算子はありますか?
-
[解決済み] 最初の項目または None を返す Python のイディオム
-
[解決済み】sedでパターンに基づいたテキストを一度に入れ替えるには?
-
[解決済み】Bashスクリプトを実行せずに構文チェックを行うには?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] Python Logging でログメッセージが2回表示される件
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?