
目標
(pythonの)「集合」について作成方法を理解して集合を作成できる。
(pythonの)「集合」の利用方法
(pythonの)「集合」の作成方法
(pythonの)「集合」の作成方法には「 {}(集合表記演算子)を利用する方法」と「set関数(組み込み関数)を利用する方法」の2つがあります。
「 {}(集合表記演算子)を利用する方法」
集合の作成方法のひとつめは「集合表記演算子を利用する方法」です。集合表記演算子はキーボードのEnterキーの左にある []括弧 のキーをShiftキーを押しながら押下します。この記号を利用すると集合が作成できます。要素にはリテラル、または変数を利用できます。
サンプルプログラム
# 整数のみの集合の作成
set_sample_no1 = {6, 4, 8, 9, 2}
# 文字列のみの集合の作成
set_sample_no2 = {'tomato', 'onion', 'cucumber', 'carrot', 'eggplant'}
# 色々なオブジェクトを要素に持つ集合の作成
# ※イミュータブルなオブジェクトのみ利用可
set_sample_no3 = {6, 'tomato', 3.14, ('onion', 'cucumber')}
print(set_sample_no1)
print(set_sample_no2)
print(set_sample_no3)
実行結果

「 {}(集合表記演算子)を利用する場合の注意点」
「 {}(集合表記演算子)」を利用して集合を作成する場合、空の集合は作成することができません。「 {} 」はこの場合、「 {}(辞書表記演算子)」として働くため、空の辞書を作成したことになります。
サンプルプログラム(変数「something」は空の辞書です。)
something = {}
「集合」を作成する場合の注意点」(要素の重複)
要素の重複パターン1
集合の要素は同じ値の要素を重複して持つことができないので、集合の作成時に、値が重複する場合は、その中の、ひとつのみが要素となります。
サンプルプログラム
set_sample_no4 = {1, 1, 2, 2, 2, 3, 3}
print(set_sample_no4)
実行結果

要素の重複パターン2
集合の要素が異なる型の値を持つ場合、その値が等価であれば重複として扱われます。
サンプルプログラム(真偽値がTrueとなる値)
set_sample_no5 = {1, 1.0, True}
print(set_sample_no5)
set_sample_no5 = {1.0, 1, True}
print(set_sample_no5)
set_sample_no5 = {True, 1, 1.0}
print(set_sample_no5)
実行結果

サンプルプログラム(真偽値がFalseとなる値)
set_sample_no6 = {0, 0.0, False}
print(set_sample_no6)
set_sample_no6 = {0.0, 0, False}
print(set_sample_no6)
set_sample_no6 = {False, 0, 0.0}
print(set_sample_no6)
実行結果

「集合」を作成する場合の注意点」(要素に利用できないオブジェクト)
集合の要素にはイミュータブルオブジェクトのみが利用できます。リストのようなミュータブルなオブジェクトを利用することはできません。
サンプルプログラム
set_sample_no7 = {6, 4, [8, 9, 2]}
print(set_sample_no7)
実行結果

要素に変数を利用しての作成
要素には変数を利用することができます。
set_value_no1 = 'tomato'
set_value_no2 = 'onion'
set_value_no3 = 'cucumber'
set_value_no4 = 'carrot'
set_value_no5 = 'eggplant'
set_sample_no8 = {
set_value_no1,
set_value_no2,
set_value_no3,
set_value_no4,
set_value_no5
}
print(set_sample_no8)
実行結果

「set関数(組み込み関数)を利用する方法」
集合の作成方法のふたつめは、set関数(組み込み関数)を利用する方法です。set関数を利用する場合、次のように記述します。
set()…空の集合を作成します。
set([9, 11, 8.7, ‘abc’, 5j])…()の中にはイテラブルオブジェクトが必要です。
# 空の集合を作成
set_sample_no1 = set()
# set関数では引数にイテラブルオブジェクトを指定して集合を作成します。
# 要素に重複がある場合、集合では重複は無視されます。
set_sample_no2 = set([6, 4, 2, 9, 2])
# 文字列から集合を作成すると文字列の一文字ずつが要素となります。
set_sample_no3 = set('あいうえお')
# 辞書から集合を作成(辞書のキーが集合の要素となります。)
set_sample_no4 = set({
'tomato' :[150, 50],
'onion' :[100, 45],
'cucumber':[45, 34],
'carrot' :['null','null'],
'eggplant':[98, 67],
'potato' :[68, 101]
}
)
print(set_sample_no1)
print(set_sample_no2)
print(set_sample_no3)
print(set_sample_no4)
実行結果

list_sample = [3, 5, 7, 3, 2, 1, 6, 4, 4, 7, 9, 8, 0 ,2]
no_duplicates_list = list(set(list_sample))
print(no_duplicates_list)
実行結果

「set関数(組み込み関数)を利用する場合の注意点」
set関数では、引数にイテラブルオブジェクトを指定します。指定しない場合は空の集合を作成できます。
set_sample_no5 = set(1, 1, 2, 2, 2, 3, 3)
print(set_sample_no5)
実行結果

set関数の引数にリストやタプルを利用すると中身の要素をひとつづつ集合の要素とすることができます。(重複する場合はひとつのみ要素となります。)この時、中身の要素が文字列の場合は、文字列がひとつの値として要素となります。
set_sample_no6 = set(['tomato', 'onion', 'cucumber' , 'carrot', 'eggplant'])
print(set_sample_no6)
set_sample_no7 = set('tomato')
print(set_sample_no7)
実行結果
※引数に文字列を利用した場合、ひと文字ごと要素となります。
※重複した文字は無視されます。

「type関数(組み込み関数)を利用した型の確認」
作成した集合のオブジェクトはset型です。組み込み関数のtype関数を利用すると、型の確認が可能です。set型の場合は「<class ‘set’>」と表示されます。
set_sample_no8 = set()
print(type(set_sample_no8))
実行結果

今回は以上になります。

ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

