集合を作成する

集合を新しく作成する方法について解説します。集合には複数の要素が含まれます。コンストラクタを使用せずにオブジェクトを作成できるのは set 型のみです。 frozenset 型はコンストラクタを使用して作成します。

(Last modified: )

値を指定して集合( set 型)を作成する

集合型( set 型)は { から } までの間に複数の要素をカンマ(,)で区切って定義します。書式は次のとおりです。

{要素1, 要素2, ...}

{ } を使用するのは辞書型と同じなので注意してください。(辞書型の場合は要素が キー:値 の形式になっている点が異なります)。

集合では値として指定できるものはハッシュ可能なオブジェクト(数値や文字列やタプルなどのイミュータブルなオブジェクトが該当します)のみ指定可能です。

{10, 30, 50}
{"Orange", "Lemon", "Peach"}

同じ集合で要素毎に異なるデータ型のオブジェクトを指定することができます。

{1, "Hello", (3, "CD")}

要素が空の集合は作成することができますが、次のように記述すると要素が空の辞書となります。

{} <-- 要素が空の辞書

要素が空の集合を作る場合は set 型のコンストラクタを使って次のように作成します。

set()

作成した辞書は数値や文字列のように変数に代入して利用することができます。

myset = {"Orange", "Lemon", "Peach"}

集合型のオブジェクトの注意点

集合型のオブジェクトには複数の要素が含まれますが、集合型には要素の順番というものがありません。その為、複数の要素が含まれている場合にどのような順序で並んでいるのかは分かりません。

また集合型のオブジェクトには同じ値の要素は 1 つか格納できません。同じ値を持つ要素を追加してもエラーとはなりませんが、同じ値を持つ要素は 1 つにまとめられます。

次の例では、集合の要素として "H" "a" "p" "p" "y" という 5 つの文字列を要素として集合を作成しています。

myset = {"H", "a", "p", "p", "y"}

print(myset)
>> {'H', 'y', 'a', 'p'}

作成した集合を print 関数で出力してみると、集合を作成した時に指定した文字列の順序とは異なる形で要素が出力されていることが分かります。また "p" は 2 つ指定していましたが、 1 つにまとめられて要素の数は 4 になっています。

変数に代入された値を要素として指定する

値を指定して集合を作成するときに、値を直接入力するかわりに値が代入された変数を指定して集合を作成することができます。

x = 10
y = 20
myset = {x, y}

print(myset)
>> {10, 20}

要素に変数名を指定した場合、要素には変数の参照が設定されるのではなく集合の作成時に変数に代入されていた値が直接記述されたのと同じ扱いとなります。その為、先ほどの集合は次のように作成したものとまったく同じです。

myset = {10, 20}

print(myset)
>> {10, 20}

辞書を作成したあとに変数に別の値を代入しても、辞書の要素は変更されません。

x = 10
y = 20
myset = {x, y}

print(myset)
>> {10, 20}

y = 40
print(myset)
>> {10, 20}

-- --

集合( set 型)を作成する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。