listtupleなど、pythonの配列を学んでいく中でも、登場することのあるsetは皆さんご存知ですか?

setは配列の重複データを削除する際の記述方法などで用いられることがありますが、何となくわかっているけど他の人に説明することが出来ない方は少なくありません。

今回はpythonのsetについて、詳しく解説していきます。

配列とsetについて

配列と合わせて覚えることの多いsetですが、listなどの配列とsetは似ている所もありますが、実はまったくの別物です。

まずはsetの基本から解説していきます。

setの基本について

setは複数の要素を格納することが出来ます。

またsetの特徴として同じ要素は持つことができません。

基本的にはlistに似ており、利用する頻度も非常に多いです。

setを使用するメリット

setを使用するメリットは、重複する要素がないことから、重複する要素を格納しても自動的に1つに集約される為、重複する要素を必要としない場合や重複する要素を削除する場合に利用されます。

また記述方法が簡易なことから、listと同様に利用頻度が非常に高いです。

setを使用するデメリット

setを使用する場合のデメリットは、要素番号を持っていない為、listやtupleのように順序となる要素番号を持っていません。

その為、特定の要素のみを取り出すことが出来ないことがデメリットになります。

setの使い方について

それでは、具体的なsetの使い方について、解説していきます。

setとlistの違いとは

setとlistの違いを整理しますと、以下の2点にまとめられます。

setと比較されることの多いlistですが、大きな違いは順番となる要素番号を持たないことです。

更にlistの場合は、要素を重複することも出来ますが、setの場合を重複する要素は1つに集約されます。

setを使う為の記述方法について

setの基本的を使う時の記述方法は、下記になります。


set(要素)

配列などの複数の要素を持つものをset()で囲みます。

setの使用例について

set宣言の具体的な使用例は、下記になります。


#list配列をset型のデータとして代入

tmp = set([1,2,3,4,5,5])

#printで出力結果を確認

print(tmp)

#実行結果

{1, 2, 3, 4, 5}

実行結果からもわかる様に、setの特徴である重複データの5が集約されて1つしか出力されていない所がポイントです。

setを利用した文字列を格納する方法について

setに文字列を格納する場合について、解説していきます。

setで文字列を分解して格納する記述方法

setに文字列を格納すると自動的に、一文字ずつ分解して格納されます。

記述方法は、下記になります。


set(文字列)

文字列は分解して格納されます。

setは順番を持たない為、出力した時は格納した順番とは限らないので注意が必要です。

setで文字列を分解して格納する使用例

あまり利用する機会はありませんが、文字列を格納して出力することで、setの特性が理解して貰いやすいので使用例を記述します。


#重複がない文字列を格納

set_sample1 = set("milk")

#重複がある文字列を格納

set_sample2 = set("apple")

#printで出力結果を確認

print(set_sample1)

print(set_sample2)

#実行結果

{'m', 'l', 'k', 'i'}
{'e', 'p', 'a', 'l'}

実行結果から文字列をsetで格納した場合、一文字ずつに分解されて、順番を持たないことから出力した際に、格納時とは違う出力結果になっています。

またappleのように重複する文字がある場合は、1つに集約されており、これも上述で触れたsetの特性になります。

setの要素を追加について

setに要素を追加する手順について、解説していきます。

配列とは記述方法が大きく異なる為、注意が必要です。

setに要素を追加する記述方法

setに要素を追加する場合は、.add()を使います。

.addの記述方法は、下記になります。


.add(追加する要素)

setに要素を追加する使用例

それでは具体的にsetに要素を追加する使用例は、下記になります。


#set型のオブジェクト作成

set_sample = set([1,2,3,4,5])

#set_sampleの要素に6を追加

set_sample.add(6)

#printで出力結果を確認

print(set_sample)

#実行結果

{1, 2, 3, 4, 5, 6}

実行結果から値が要素が追加されていることが、確認することが出来ます。

setに複数の要素を追加記述方法

.addでは要素を1つずつしか追加できません。

複数の要素を追加する場合の記述方法は、下記になります。


.update(追加する要素)

setに複数の要素を追加する使用例

複数の要素を追加する場合の使用例は、下記になります。


#set型のオブジェクト作成

set_sample = set([1,2,3,4,5])

#追加する要素

set_sample2 = set([6,7,8,9])

#複数要素の追加

set_sample.update(set_sample2)

#printで出力結果を確認

print(set_sample)

#実行結果

{1, 2, 3, 4, 5, 6, 7, 8, 9}

実行結果から要素を纏めて追加されていることが、確認できます。

setの要素削除について

setを使用することで、重複されたデータは自動的に削除されます。

それとは別に現在の重複されていない要素を削除する場合の手順について、解説をしていきます。

setの要素を削除する記述方法

setの要素を削除する場合は、.removeを使用します。

基本的な記述方法は、下記になります。


.remove(削除する要素)

setの要素を削除する使用例

記述方法だけでは、具体的なイメージが沸きにくい為、setの要素を削除する使用例は、下記になります。


#setのオブジェクト作成

set_sample = set([1,2,3,4,5])

#set_sampleから3の要素を削除

set_sample.remove(3)

#printで出力結果を確認

print(set_sample)

#実行結果

{1, 2, 4, 5, }

実行結果から3の要素が削除されていることが、確認できます。

setの要素を全て削除する記述方法

setの要素を全て削除する記述方法は、下記になります。


.clear()

setの要素を全て削除する使用例

実際にsetの要素を全て削除する.clear()の使用例は、下記になります。


#setのオブジェクト作成

set_sample = set([1,2,3,4,5])

#setの要素を全て削除

set_sample.clear()

#printで出力結果を確認

print(set_sample)

#実行結果

set()

実行結果のset()は、要素が全て削除されて空になっていることを表しています。

setの要素数を調べる方法について

配列でも同じことが言えますが、複数の要素を格納できるsetにいくつの要素が入っているかを確認する機会は少なくありません。

要素数を調べる方法について、解説していきます。

setの要素数を調べる記述方法

setの要素数を調べる記述方法を行う場合は、len()を使用します。

基本的な記述方法は、下記になります。


len(要素数を調べる対象)

setの要素数を調べる使用例

setの要素数を調べる具体的な、使用例は下記になります。


#要素数を調べる為のset型のデータを準備

set_sample = set([1,2,3,4,5])

#len()を使用して要素数を格納

set_len = len(set_sample)

#printで出力結果を確認

print(set_len)

#実行結果

5

実行結果から要素数が戻り値として5が格納されていることがわかります。

既にlistなどの配列を学習した方はご存知かもしれまんせんが、配列の場合もlen()を使って要素数を取得することが可能です。

set内の要素検索について

set内に特定の要素が含まれているかを確認する機会があります。

要素を検索する方法について、解説していきます。

set内の要素を検索する記述方法

set内の要素を検索する場合は、配列でも使用するinを使用します。

基本的な記述方法は、下記になります。


検索する要素 in 検索対象のset

戻り値は検索する要素が含まれていた場合、Trueになります。

逆に検索する要素が含まれていない場合は、Falseが戻り値になります。

set内の要素を検索する使用例

inを使用してset内の要素を検索する使用例は、下記になります。


#検索される対象のsetを作成

set_sample = set([1,2,3,4,5])

#検索対象から特定の要素を検索

result1 = 5 in set_sample

result2 = 7 in set_sample

#printで出力結果を確認

print(result1)

print(result2)

#実行結果

True
False

記述方法でも解説している様に、result1では検索要素がsetに含まれていた為、Trueが出力されています。

それに対して、result2は検索要素がsetに含まれていない為、Falseが出力されえいます。

まとめ

今回は集合型のデータを扱うことが出来るsetについて、解説をしてきましたが、いかがでしたか。

setは複数のデータを格納することが出来るだけでなく、その特性から重複した要素を配列から削除するなどの利用方法があります
ぜひ、積極的に学習し、使いこなしていきましょう。

DMM WEWBCAMPについて

DMM WEBCAMPは3ヶ月間で未経験から即戦力エンジニアを育成する転職保障付きのプログラミングスクールです。1ヶ月でプログラミング・Webデザインを学ぶ通い放題の「ビジネス教養コース」も展開しています。

DMM WEBCAMPを運営する株式会社インフラトップ では、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

3月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のDMM WEBCAMP(旧WEBCAMP PRO)。
2月受入枠は満員となっております。3月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

▼未経験から1ヶ月でWEBデザイン・プログラミングを学びたい方はこちら!

おすすめの記事