Pythonのセット(set)とは?作成・操作・結合の基本を徹底解説
Pythonのセット(set)は、順序を持たない(unordered)コレクション型で、重複のない一意な(unique)かつ変更不可能な(immutable)オブジェクトを格納します。つまり、セットに同じ要素を複数入れることはできず、一度作成した要素そのものを書き換えることもできません。
ポイント: セットの「要素」はイミュータブル(変更不可)ですが、セット自体はミュータブル(変更可能)です。そのため、後から要素の追加や削除を行うことは可能です。
セットは順序を保持しません。同じセットを何度 print しても、表示される要素の並び順が変わることがあります。
Pythonでは、セットを波括弧 {} で定義し、各要素はカンマ , で区切ります。
リストと同様に、セットには異なる型のオブジェクトを混在させられます。すべて文字列である必要も、整数である必要もありません。
mixedTypesSet = {'one', True, 13, 2.0}
セットの作成方法
colorsSet = {"red", "green", "blue"}
print(colorsSet)
出力:
{'red', 'blue', 'green'}
セットの要素へのアクセス方法
セットは順序を持たずインデックスも保持しないため、リストのようにインデックス番号で特定の要素にアクセスすることはできません。代わりに、for ループを使ってセット内の要素を1つずつ取り出します。
colorsSet = {"red", "green", "blue"}
for c in colorsSet:
print(c)
出力:
green
red
blue
セットへの要素追加方法
要素を1つだけ追加する場合は add() メソッドを、複数の要素をまとめて追加する場合は update() メソッドを使用します。
要素を1つ追加する
colorsSet = {"red", "green", "blue"}
colorsSet.add("yellow")
print(colorsSet)
出力:
{'blue', 'red', 'green', 'yellow'}
複数の要素を追加する
colorsSet = {"red", "green", "blue"}
colorsSet.update(["yellow", "orange", "white"])
print(colorsSet)
出力:
{'white', 'red', 'green', 'yellow', 'orange', 'blue'}
セットから要素を削除する方法
セットから要素を削除するメソッドには、remove() と discard() の2種類があります。
remove() メソッドは指定した要素を削除します。ただし、指定した要素が存在しない場合はエラー(KeyError)が発生します。
colorsSet = {"red", "green", "blue", "orange"}
colorsSet.remove("orange")
print(colorsSet)
出力:
{'blue', 'green', 'red'}
discard() メソッドも指定した要素を削除しますが、要素が存在しない場合でもエラーは発生しません。存在が保証されていない要素を削除したい場合に便利です。
セットの全要素を削除する
すべての要素を削除して空のセットにするには、clear() メソッドを使用します。
colorsSet = {"red", "green", "blue", "orange"}
colorsSet.clear()
print(colorsSet)
出力:
set()
セット自体を完全に削除する
セット変数そのものを削除するには、del キーワードを使用します。削除後にそのセットへアクセスすると、NameError が発生します。
colorsSet = {"red", "green", "blue", "orange"}
del colorsSet
print(colorsSet)
出力:
Traceback (most recent call last):
File "pythonSet.py", line 78, in <module>
print(colorsSet)
NameError: name 'colorsSet' is not defined
セットの要素数を取得する方法
セットの要素数は len() 関数で取得できます。
colorsSet = {"red", "green", "blue", "orange"}
print(len(colorsSet))
出力:
4
2つのセットを結合する方法
2つのセットを結合する最も簡単な方法は、union() メソッドを使うことです。union() は、両方のセットのすべての要素を含む新しいセットを返します(元のセットは変更されません)。
colorsSet = {"red", "green", "blue", "orange"}
numbersSet = {1, 2, 3, 4}
numbersAndColors = colorsSet.union(numbersSet)
print(numbersAndColors)
出力:
{1, 2, 'blue', 3, 4, 'green', 'red', 'orange'}
まとめ
- セットは「重複なし・順序なし」のコレクション型
- 要素の追加:
add()(1件)、update()(複数) - 要素の削除:
remove()(存在しないとエラー)、discard()(エラーなし)、clear()(全消去) - セット自体の削除:
del - 要素数の取得:
len() - セットの結合:
union()
-
Pythonで学ぶ探索的データ分析(EDA)の基本と実践
データ分析において、探索的データ分析(Exploratory Data Analysis:EDA)は必ず最初に行うべきステップです。EDAを実施することで、以下のようなことが可能になります。データセットへの深い洞察を得るデータの背後にある構造を理解する重要なパラメータや、それらの間の関係性を抽出する前提となる仮説を検証するサンプルデータセットを使ったEDAの理解PythonでEDAを理解するために、サンプルデータはWebサイトから直接取得するか、ローカルディスクから読み込むことができます。ここでは、公開されているUCI Machine Learning Repositoryから「赤ワインの品質
-
Pythonのセット(集合)操作を徹底解説!主要メソッドと演算子の使い方
数学における集合(セット)とは、互いに異なるオブジェクトの集まりであり、それ自体が一つのオブジェクトとして扱われるものです。たとえば、2、4、6という数値は個別に見ればそれぞれ独立したオブジェクトですが、ひとまとめに考えればサイズ3の一つの集合「{2, 4, 6}」を形成します。 Pythonのセットには次のような特徴があります。 重複した要素を持たない 順序が定義されていない(インデックスによるアクセス不可) ミュータブル(frozensetを除く) 集合に対する基本的な演算 演算 記法 意味 積集合(共通部分) A ∩ B AとBの両方に含まれるすべての要素 和集合 A ∪