「特定の値がリストや文字列に含まれているか確認したい」
「if文で『○○が含まれていたら』をどう書くの?」
そんな疑問を解決するために、今回はin演算子について、初心者の方でも理解できるように詳しく説明していきます。
in演算子とは?「含まれているか」をチェックする便利な機能

in演算子は、「ある要素がデータの中に含まれているかどうか」をチェックするための演算子です。
基本的な書き方
要素 in データ
結果は:
- True:含まれている場合
- False:含まれていない場合
簡単な例で理解しよう
fruits = ["りんご", "バナナ", "みかん"]
# 「バナナ」が含まれているかチェック
print("バナナ" in fruits) # True
# 「ぶどう」が含まれているかチェック
print("ぶどう" in fruits) # False
とても直感的で分かりやすいですね!
リストでのin演算子の使い方
基本的な使い方
numbers = [10, 20, 30, 40, 50]
# 20が含まれているかチェック
if 20 in numbers:
print("20が見つかりました") # この行が実行される
# 100が含まれているかチェック
if 100 in numbers:
print("100が見つかりました")
else:
print("100は見つかりませんでした") # この行が実行される
文字列のリストでも同じように使える
colors = ["赤", "青", "緑", "黄色"]
user_choice = "青"
if user_choice in colors:
print(f"{user_choice}は有効な色です")
else:
print(f"{user_choice}は無効な色です")
複数の条件をチェックする
favorite_fruits = ["りんご", "バナナ", "いちご"]
# どれか1つでも含まれているかチェック
if "りんご" in favorite_fruits or "みかん" in favorite_fruits:
print("好きな果物が見つかりました")
# すべて含まれているかチェック
required_items = ["りんご", "バナナ"]
if all(item in favorite_fruits for item in required_items):
print("必要な果物がすべて揃っています")
not in:「含まれていない」をチェックする

not in
を使うと、含まれていない場合の条件を書けます。
forbidden_words = ["悪い", "だめ", "いけない"]
user_input = "これは良いコメントです"
if "悪い" not in user_input:
print("適切なコメントです") # この行が実行される
# 複数の禁止ワードをチェック
if all(word not in user_input for word in forbidden_words):
print("すべての禁止ワードが含まれていません")
文字列でのin演算子の使い方
文字列に対してin演算子を使うと、部分文字列(一部の文字)が含まれているかをチェックできます。
基本的な使い方
message = "Pythonプログラミングは楽しい"
# 「Python」が含まれているかチェック
print("Python" in message) # True
# 「楽しい」が含まれているかチェック
print("楽しい" in message) # True
# 「難しい」が含まれているかチェック
print("難しい" in message) # False
実用的な例
email = "user@example.com"
# メールアドレスの形式をチェック
if "@" in email and "." in email:
print("有効なメールアドレスの可能性があります")
else:
print("無効なメールアドレスです")
# ファイル名の拡張子をチェック
filename = "document.pdf"
if ".pdf" in filename:
print("PDFファイルです")
elif ".txt" in filename:
print("テキストファイルです")
else:
print("その他のファイルです")
大文字小文字を区別する
text = "Python Programming"
print("python" in text) # False(大文字小文字が違う)
print("Python" in text) # True
# 大文字小文字を区別しない場合
print("python" in text.lower()) # True
辞書でのin演算子の使い方

辞書に対してin演算子を使うと、キーの存在をチェックします。
キーの存在確認
user = {"name": "太郎", "age": 25, "city": "東京"}
# キーが存在するかチェック
if "name" in user:
print(f"名前: {user['name']}") # 名前: 太郎
if "email" in user:
print(f"メール: {user['email']}")
else:
print("メールアドレスが登録されていません")
値の存在確認
キーではなく値をチェックしたい場合は、.values()
を使います。
user = {"name": "太郎", "age": 25, "city": "東京"}
# 値が存在するかチェック
if "太郎" in user.values():
print("太郎さんが見つかりました")
if 25 in user.values():
print("25歳の人がいます")
項目(キーと値のペア)の存在確認
user = {"name": "太郎", "age": 25}
# 項目全体をチェック
if ("name", "太郎") in user.items():
print("名前が太郎の項目があります")
タプルとセットでのin演算子
タプルでの使用
coordinates = (10, 20, 30)
if 20 in coordinates:
print("20が含まれています")
# ネストしたタプル
points = ((0, 0), (1, 1), (2, 2))
if (1, 1) in points:
print("座標(1, 1)が見つかりました")
セット(集合)での使用
numbers_set = {1, 2, 3, 4, 5}
if 3 in numbers_set:
print("3が含まれています")
# セットは重複を自動で除去し、高速な検索ができる
large_set = set(range(1000000))
print(999999 in large_set) # 高速で検索される
for文でのin演算子

in演算子はfor文でも重要な役割を果たします。
基本的なfor文
fruits = ["りんご", "バナナ", "みかん"]
for fruit in fruits:
print(f"今日の果物: {fruit}")
# 今日の果物: りんご
# 今日の果物: バナナ
# 今日の果物: みかん
辞書のfor文
user = {"name": "太郎", "age": 25, "city": "東京"}
# キーを取得
for key in user:
print(f"キー: {key}")
# 値を取得
for value in user.values():
print(f"値: {value}")
# キーと値の両方を取得
for key, value in user.items():
print(f"{key}: {value}")
よくある間違いと注意点
部分一致になることに注意
text = "Python"
print("on" in text) # True(部分一致)
print("java" in text) # False
# 完全一致をチェックしたい場合
words = ["Python", "Java", "JavaScript"]
print("Java" in words) # True(完全一致)
print("Script" in words) # False(部分一致ではヒットしない)
辞書では値ではなくキーをチェックすることに注意
user = {"name": "太郎", "age": 25}
# 間違い:値をチェックしようとしている
# print("太郎" in user) # False
# 正しい:キーをチェック
print("name" in user) # True
# 正しい:値をチェックしたい場合
print("太郎" in user.values()) # True
リストの中のリストをチェックする場合
nested_list = [[1, 2], [3, 4], [5, 6]]
# 完全一致のみ判定される
print([1, 2] in nested_list) # True
print(1 in nested_list) # False(1は要素ではない)
# 内部の要素をチェックしたい場合
print(1 in [item for sublist in nested_list for item in sublist]) # True
実践的な使用例

ユーザー入力の検証
valid_commands = ["start", "stop", "restart", "status"]
while True:
user_input = input("コマンドを入力してください: ").lower()
if user_input in valid_commands:
print(f"'{user_input}'コマンドを実行します")
break
elif user_input == "quit":
print("プログラムを終了します")
break
else:
print("無効なコマンドです。有効なコマンド:", ", ".join(valid_commands))
ファイルの種類判定
def get_file_type(filename):
"""ファイル名から種類を判定する"""
image_extensions = [".jpg", ".jpeg", ".png", ".gif", ".bmp"]
document_extensions = [".pdf", ".doc", ".docx", ".txt"]
video_extensions = [".mp4", ".avi", ".mov", ".wmv"]
filename_lower = filename.lower()
if any(ext in filename_lower for ext in image_extensions):
return "画像ファイル"
elif any(ext in filename_lower for ext in document_extensions):
return "文書ファイル"
elif any(ext in filename_lower for ext in video_extensions):
return "動画ファイル"
else:
return "その他のファイル"
# 使用例
files = ["photo.jpg", "report.pdf", "movie.mp4", "data.csv"]
for file in files:
print(f"{file}: {get_file_type(file)}")
設定の管理
class UserSettings:
def __init__(self):
self.settings = {
"theme": "light",
"language": "ja",
"notifications": True
}
def update_setting(self, key, value):
"""設定を更新する"""
if key in self.settings:
self.settings[key] = value
print(f"'{key}'を'{value}'に更新しました")
else:
print(f"'{key}'は無効な設定項目です")
def get_setting(self, key):
"""設定を取得する"""
if key in self.settings:
return self.settings[key]
else:
return None
# 使用例
user_settings = UserSettings()
user_settings.update_setting("theme", "dark") # テーマを更新
user_settings.update_setting("invalid", "test") # 無効な設定
よくある質問
- QQ:in演算子はどんなデータ型に使える?
- A
リスト、タプル、文字列、辞書、セットなど、イテラブル(繰り返し可能)なデータ構造に使えます。
- Qin演算子は高速?
- A
データ構造によって異なります。リストは要素数に比例、セットや辞書は非常に高速です。
# リスト:要素数が多いと遅くなる large_list = list(range(100000)) print(99999 in large_list) # 遅い # セット:要素数に関係なく高速 large_set = set(range(100000)) print(99999 in large_set) # 高速
- Q正規表現との違いは?
- A
in演算子は完全一致や部分一致の単純な検索、正規表現はパターンマッチングです。
python
import re text = "email@example.com" # in演算子:単純な部分一致 print("@" in text) # True # 正規表現:パターンマッチング pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' print(bool(re.match(pattern, text))) # True
- QNone値が含まれている場合は?
- A
None も通常の値として扱われます。
data = [1, 2, None, 4] print(None in data) # True print(3 in data) # False
まとめ
pythonのin演算子は、あらゆる場面で登場する非常に便利な機能です。
おさらい:
- 基本構文:
要素 in データ
でTrue/Falseを返す - 適用範囲:リスト、文字列、辞書、タプル、セットなどで使用可能
- not in:含まれていない場合の条件を書ける
- 注意点:辞書ではキーをチェック、文字列では部分一致になる
コメント