【初心者向け】Pythonの in と not in の使い方のまとめ
はじめに
Pythonで頻繁に使われるキーワードに in
と not in
があります。
-
x in リスト
:x がリストに含まれていればTrue
-
x not in リスト
:x がリストに含まれていなければTrue
(in
の否定)
とてもシンプルで直感的に使える構文ですが、
リスト以外にも使える ことや、文字列・辞書との違いなど、
意外と奥が深いポイントもあります。
本記事では、Pythonの in
/ not in
の使い方を整理して解説します。
1. リストに対する使い方
最もよく使われるのは、リストに特定の値が含まれているかを調べる使い方です。
fruits = ["apple", "banana", "orange"]
"apple" in fruits # True
"grape" not in fruits # True
-
in
:値が含まれていればTrue
を返します -
not in
:値が含まれていなければTrue
を返します
2. 文字列に対する使い方
文字列に対しても in
/ not in
は使えます。
text = "Hello, world!"
"Hello" in text # True
"bye" not in text # True
- 部分一致として判定される ので便利です。
部分一致として判定される → 指定した文字列が対象の文字列の「一部に含まれていれば
True
」になります。
"o," in text # True(カンマも含めて一致している)
"hello" in text # False(大文字小文字が異なる)
3. 辞書に対する使い方
辞書に対して in
を使うと、キーだけが対象になります。
person = {"name": "Alice", "age": 30}
"name" in person # True
"Alice" in person # False(値は対象にならない)
✅ 値に対して確認したいとき
辞書の値に対して in
を使うときは、以下のように記述します。
"Alice" in person.values() # True
for
文での in
の使い方
4. for
ループの中でも in
は頻出です。
for fruit in ["apple", "banana"]:
print(fruit)
これは、「リストの中の要素を1つずつ取り出して処理する」ために in
を使っています。
✅ 実行結果
apple
banana
要素を順番に処理したいときは、必ずといっていいほど for ~ in ~
を使います。
for
ループをさらに便利にする方法については、enumerate() の使い方も参考になります。
in
/ not in
の仕組みについて(参考情報)
5. 補足:※
in
は内部的に__contains__()
を呼び出しています。
(="a" in ["a", "b"]
は["a", "b"].__contains__("a")
と同等)
実は in
/ not in
は、Pythonの内部的には __contains__()
という特殊メソッドが使われています。
"a" in ["a", "b"]
# 実際は ["a", "b"].__contains__("a") と同じ意味になります
この仕組みを知っておくと、
クラスを自作する際に、in
の挙動をオリジナルで定義することもできるといった応用が可能になります。
ただしこの内容は、Pythonをある程度使い慣れてから使用することが多いため、
初学者の方は「内部ではこうなっているのか」と参考程度に知っておくだけで十分です。
おわりに
Pythonの in
/ not in
は、リストだけでなく、
文字列・辞書・集合など、複数の要素を持つデータ型すべてに対して使える便利な演算子です。
初心者のうちは「リストに含まれるか?」で覚えがちですが、
文字列の検索や辞書のキー確認など、さまざまな場面で使用できます。
また、今回は詳しく紹介していないですが、タプル・集合・rangeオブジェクトなどにも in
/ not in
は使えます。
3 in (1, 2, 3). # True(タプル)
"a" in {"a", "b"} # True(集合)
2 in range(5). # True(range)
本記事が参考になれば幸いです。
Discussion