Pythonのset(集合)で要素の存在を確認する方法(in 演算子)

Pythonのset(集合型)は、重複する要素を持たないという特徴の他に、もう一つ非常に重要な利点があります。それは、特定の要素がその set の中に**「含まれているかどうか(存在するかどうか)」を非常に高速に判定できる**ことです。

リスト(list)でも同じことは可能ですが、リストの要素数が数百万と非常に大きくなると、set での存在確認の速度が圧倒的に有利になります。

この記事では、set の要素の存在を確認するための in 演算子の使い方を解説します。

目次

in 演算子 – 存在の確認

in 演算子を使用すると、指定した要素が set 内に存在するかどうかを True(存在する)または False(存在しない)のブール値で取得できます。

構文:

要素 in set変数

使用例: あるシステムへのアクセスが許可されているユーザーIDを set で管理しているとします。

# アクセス許可ユーザーのセット
authorized_users = {"u-tanaka", "u-sato", "u-admin", "u-suzuki"}
print(f"許可ユーザーセット: {authorized_users}")

# 1. 存在する要素 ("u-admin") を確認
check_admin = "u-admin" in authorized_users
print(f"「u-admin」は存在するか?: {check_admin}")

# 2. 存在しない要素 ("u-kato") を確認
check_kato = "u-kato" in authorized_users
print(f"「u-kato」は存在するか?: {check_kato}")

実行結果:

許可ユーザーセット: {'u-suzuki', 'u-admin', 'u-tanaka', 'u-sato'}
「u-admin」は存在するか?: True
「u-kato」は存在するか?: False

not in 演算子 – 不在の確認

逆に、要素が set 内に存在しないことを確認したい場合は、not in 演算子を使用します。

構文:

要素 not in set変数

使用例:

# "u-kato" は「許可ユーザーセット」に含まれていないか?
check_kato_not_in = "u-kato" not in authorized_users
print(f"「u-kato」は存在しないか?: {check_kato_not_in}")

実行結果:

「u-kato」は存在しないか?: True

if 文での活用

in 演算子は、if 文の条件式で使うのが最も一般的です。これにより、「もしユーザーが許可ユーザーセットに含まれていたら」といった処理を簡潔に記述できます。

def check_access(user_id):
    """
    ユーザーIDが許可セットに含まれているか判定する
    """
    if user_id in authorized_users:
        print(f"ようこそ、{user_id}。アクセスを許可します。")
    else:
        print(f"エラー: {user_id} にアクセス権限がありません。")

# 実行
check_access("u-sato")
check_access("u-guest")

実行結果:

ようこそ、u-sato。アクセスを許可します。
エラー: u-guest にアクセス権限がありません。

まとめ

  • set 内に要素が存在するかどうかを確認するには in 演算子を使います。
  • 要素 in set は、存在すれば True、しなければ False を返します。
  • 存在しないことを確認するには not in 演算子を使います。
  • set を使うと、リスト(list)に比べてこの存在確認を非常に高速に行うことができます。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次