teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/03/18 08:12

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -8,4 +8,14 @@
8
8
  > [組み込み型 — Python 3.8.2 ドキュメント](https://docs.python.org/ja/3/library/stdtypes.html#boolean-operations-and-or-not)
9
9
 
10
10
  という動作になります。Pythonでは基本的に任意のオブジェクトの真理値を判定できるので、上の動作でいいことがわかるはずです。
11
- (つまり`x`が真なら全体の真理値は`x`の真理値でよく、`x`が真でない(偽である)ときは`y`の真理値で全体の真理値が決まる、という`or`に相応しい動作になっています。そしてどちらにしても、返すのは`bool`ではなく元のオペランドを評価した結果です)
11
+ (つまり`x`が真なら全体の真理値は`x`の真理値でよく、`x`が真でない(偽である)ときは`y`の真理値で全体の真理値が決まる、という`or`に相応しい動作になっています。そしてどちらにしても、返すのは`bool`ではなく元のオペランドを評価した結果です)
12
+
13
+ ---
14
+
15
+ こういうときは`in`で書くのが通例です。
16
+
17
+ ```python
18
+ if a in {"hoge", "fuga"}:
19
+ ```
20
+
21
+ `list`や`tuple`として書く場合もありますが、とりあえず今回は`set`としています。集合とみなすならたぶんこれが妥当でしょう。パフォーマンス面でも`set`の帰属判定は多少高速に行えます。