【Python】「in, not in」演算子

【Python】「in, not in」演算子

目次

in, not in 演算子とは?

Pythonの in および not in 演算子は、ある要素がシーケンス(リスト、タプル、文字列など)やコレクション(辞書、集合など)に含まれているかどうかを判定するための演算子です。

基本的な構文は次の通りです:


要素 in シーケンス  # 要素がシーケンスに含まれていれば True、そうでなければ False
要素 not in シーケンス  # 要素がシーケンスに含まれていなければ True、そうでなければ False

リストに対する in, not in

リストに対して in を使用すると、特定の要素が含まれているかを調べることができます。


fruits = ["apple", "banana", "cherry"]
print("apple" in fruits)  # True
print("grape" in fruits)  # False
print("orange" not in fruits)  # True

文字列に対する in, not in

文字列では、部分文字列が含まれているかをチェックできます。


text = "Python is powerful"
print("Python" in text)  # True
print("java" in text)  # False
print("is" not in text)  # False

辞書に対する in, not in

辞書に対して in を使用すると、キーが含まれているかを調べることができます。


data = {"name": "Alice", "age": 25, "city": "Tokyo"}
print("name" in data)  # True
print("Alice" in data)  # False
print("country" not in data)  # True

集合に対する in, not in

集合でも要素の存在を確認できます。


numbers = {1, 2, 3, 4, 5}
print(3 in numbers)  # True
print(6 not in numbers)  # True

タプルに対する in, not in

タプルでも in を使うことができます。


colors = ("red", "blue", "green")
print("blue" in colors)  # True
print("yellow" not in colors)  # True

パフォーマンスの考慮

in 演算子のパフォーマンスはデータ型によって異なります。

  • リスト、タプルでは線形検索(O(n))
  • 辞書、集合ではハッシュテーブルによる検索(O(1))

import time

big_list = list(range(1000000))
big_set = set(big_list)

start = time.time()
999999 in big_list  # 遅い
print("リスト検索時間:", time.time() - start)

start = time.time()
999999 in big_set  # 速い
print("セット検索時間:", time.time() - start)

実用的な使用例

条件分岐でリストを使う:


allowed_users = ["Alice", "Bob", "Charlie"]
user = "Alice"

if user in allowed_users:
    print("アクセス許可")
else:
    print("アクセス拒否")

文字列のフィルタリング:


text = "The quick brown fox"
if "fox" in text:
    print("動物がいます!")

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です