集合(set)

【Python】集合内包表記の使い方

【Python】集合内包表記の使い方

Pythonの集合内包表記(set comprehension)の使い方について解説します。

集合内包表記(set comprehension)

Pythonにおける集合内包表記(set comprehension)とは、既存のリスト等のイテラブルなオブジェクトから新たな集合を作成する際にシンプルに記載するための定義方法です。

この記事では、集合内包表記の基本的な使い方について紹介します。

集合内包表記の使い方

集合内包表記の構文は以下になります。

集合内包表記
{式 for 仮変数 in イテラブルなオブジェクト if  条件}

上記の意味合いとしては、イテラブルなオブジェクトから要素を順番に仮変数に取得し、条件に一致するものを使って式を適用した値で集合を作るということになります。

既存リストから集合を作成する場合

既存のリストから集合内包表記を使って集合を作成する場合は以下のようにします。

data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 10, 15, 20, 25, 30]

# 集合内包表記
data_set = {dt for dt in data if dt % 2 == 0}
print(f"data_set : {data_set}")
【実行結果】
data_set : {40, 10, 50, 20, 30}

上記例では、dataという既存リストから偶数を取り出して集合を作成しています。集合は、重複した値は持たないため、重複した値は一つにまとめられていることが分かります。また、集合は順序を持たないため、結果の順序は元のリストの順に依存しないことも注意しましょう。

既存リストから集合内包表記を使用しないで記載する場合

集合内包表記は、通常のfor文で書き換えることが可能です。

data = [10, 15, 20, 25, 30, 35, 40, 45, 50, 10, 15, 20, 25, 30]

# 内包表記を使わない場合
data_set = set()
for dt in data:
    if dt % 2 == 0:
        data_set.add(dt)
print(f"data_set : {data_set}")

集合内包表記の特徴と注意点

集合内包表記は、処理をシンプルに記述できる点が特徴です。また、集合内包表記は、Python内部で最適化されているため、一般的に実行速度も速くなります。処理速度は状況によって異なり、必ずしも常に早いとは限らないため、その点には注意が必要です。

また、集合内包表記がコードを複雑にする場合には、使用を慎重に検討してください。特にチーム開発では、ソースコードの可読性が重要ですので、シンプルさと可読性のバランスを保つことが重要です。

まとめ

Pythonの集合内包表記(set comprehension)の使い方について解説しました。

集合内包表記は、イテラブルなオブジェクトから新たな集合を作成する際にシンプルに記載するための定義方法です。この記事では、集合内包表記の基本的な使い方や特徴と注意点を紹介しました。

Pythonにおける内包表記は他にも「リスト内包表記」「辞書内包表記」「ジェネレータ内包表記」といったものがあります。内包表記については「内包表記(まとめ)」を参考にしてください。