やあ!今日はPythonの「in」「not in」演算子について説明するよ。
Python “in” 演算子
Python の in 演算子は、指定された値が文字列、配列、リスト、タプルなどのシーケンスに含まれる要素であるかどうかをチェックします。
この演算子を条件として使用すると、True または False というブール値の結果を返します。
指定された値がシーケンスの中にある場合、ステートメントは True を返します。
一方、見つからない場合は False を返します。
それでは、 in 演算子の動作をよりよく理解するために、例を挙げてみましょう。
#in operator workinglist1= [1,2,3,4,5]
string1= "My name is Python"
tuple1=(11,22,33,44)
print(5 in list1) #True
print("is" in string1) #True
print(88 in tuple1) #False
|
結果は以下の通りです。
#not in operator workinglist1= [1,2,3,4,5]
string1= "My name is Python"
tuple1=(11,22,33,44)
print(5 not in list1) #False
print("is" not in string1) #False
print(88 not in tuple1) #True
|
ここで
まず、リスト list1、文字列 string1、タプル tuple1 をいくつかの値で初期化しました。
次に、in 演算子を用いて、ある値が上記のシーケンスに含まれるかどうかを調べます。
上の出力からわかるように、5 in list1はTrueと評価されます。
これは、値5がリストの中にあることを意味します。
同様に、in 演算子を用いて、string1 に “is” という文字列があるかどうかも確認します。
しかし、最後のケースでは、88が配列 tuple1 の内部に存在しないため、条件はFalseとなります。
Python “not in” 演算子
Python の not in 演算子は in 演算子と全く逆の動作をします。
この演算子も配列内に指定した値があるかどうかをチェックしますが、戻り値は in 演算子とはまったく逆になります。
指定された値がシーケンスの中に存在する状態で使用された場合、この文は False を返します。
一方、そうでない場合は True を返します。
先ほどの例で、in 演算子を not in 演算子に置き換えて考えてみましょう。
#in and not in operator working on Dictionarydict1 = {1: "one", 2: "two", 3: "three", 4: "four"}
print("one" in dict1)
print("one" not in dict1)
print(3 in dict1)
print(3 not in dict1)
print(5 in dict1)
print(5 not in dict1)
|
と出力されます。

予想通り、結果の出力は先ほどの in 演算子を使ったときと正反対になります。
Python辞書の “in “と “not in “演算子の動作について
前回は、さまざまな種類のシーケンスに対する in と not in 演算子の動作について説明しました。
しかし、ディクショナリーはシーケンスではありません。
辞書は配列とは異なり、キーでインデックスを構成します。
では、上記の演算子は辞書に対して機能するのでしょうか?そして、もし動作するとしたら、どのように条件を評価するのだろうか。
例を挙げて説明しよう。

結果は、以下の通りになります。

ここではまず、あるキーとそれに対応する値を持つ辞書 dict1 を初期化しました。
上の出力からわかるように、dict1の“one” は False と評価されます。
一方、dict1の3′ は True と評価されます。
つまり、in 演算子は辞書のキーの中から要素を探すのであって、値を探すのではないことがわかります。
したがって、最後の 5 in dict1 も同様に、辞書のキーではないので False になります。
先に述べたように、ここでも not in 演算子は同じように評価されます。
まとめ
この記事では、Pythonの in と not in 演算子について学び、いくつかの例を用いてその動作を説明しました。
さらに質問がある場合は、下のコメント欄からどうぞ。
参考文献
- Pythonの “in “と “not in “のメンバーシップ演算子 – Journal Dev Post,
- Pythonの “in “と “not in “ステートメントはどのように動作しますか – StackOverflow質問です。