【Python入門】すぐわかる!set型(集合型)の基本まとめ

Kotono
書いた人 Kotono

今回はPythonにおける集合を扱うための型である「set型」をご紹介したいと思います。

この記事では

・set型とは
・set型の基本的な使い方

といった基本的な内容から

・list型からset型を作る方法
・set型で出来る様々な計算方法
・list型からset型を作る方法

など、より応用的な内容に関してもやさしく解説していきたいと思います。

※ この記事のコードはPython 3.7で動作確認しました。

set型とは

皆さんはset型を使用したことはありますか?

そもそもset型が何か知っていますか?

Pythonのset型とは、集合を扱うための型です。

もっとも普及しているリスト型のように、set型も同じく複数の値を格納できる型です。

しかし、リスト型との決定的な違いは

・重複した要素がない
・要素に順番がない

といった二点が挙げられます。

リスト型についての詳しい説明は、以下のリンクを参照してください。

set型の基本的な使い方

では早速、set型を使用してみましょう。

set型オブジェクトを作成するには、以下のようにコードを書きます。

出力結果は以下の通りです。

上のコードでは三つの整数を含むset型オブジェクトを二つ作成し、表示させてみました。

ちなみに、ご覧いただけるように二番目に作成したmyset2は重複した要素を含みます。

出力されるときは重複された要素は無視されているため、両方とも同じ内容が表示されました。

setに要素を追加する方法

set型オブジェクトに要素を追加するには、addメソッドを使います。

以下のサンプルコードをご覧ください。

出力結果は以下の通りです。

上のコードでは、既存のset型オブジェクトmysetに要素を追加してみました。

また、既にある要素を追加してもエラーは発生しませんが、重複している要素は無視されるので注意してください。

setから要素を削除する方法

set型オブジェクトから特定の要素を削除するには、removeメソッドを使います。

以下のサンプルコードをご覧ください。

出力結果は以下の通りです。

上のコードでは、removeメソッドを使用し値4の要素を削除してみました。

実際、正常に3のみが削除されていることが確認できます。

しかし、存在しない要素を削除しようとするとエラーが発生するので、注意してください。

また、すべての要素を一気に削除するには、clearメソッドが便利です。

以下のサンプルコードをご覧ください。

出力結果は以下の通りです。

ご覧いただけるように、出力結果は空のset型オブジェクトになりました。

set型で出来る計算方法

set型オブジェクトを扱うことができると、集合の計算が簡単に出来てしまいます。

集合の計算とは

・和集合
・積集合
・差集合
・排他的論理和集合

などのことです。

一見難しそうにみえますが、実際はとても直感的でわかりやすいものなので、ぜひ覚えておいてくださいね。

和集合(「|」とunionメソッド)

ではまずは、和集合の計算を行ってみましょう。

2つのset型オブジェクトの要素を全て持った新しいset型オブジェクトのことを、和集合といいます。

図で表すと、青く塗られた部分が和集合になります。

union-640x480

和集合を作るには以下のサンプルコードをご覧ください。

出力結果は以下の通りです。

上のコードでは、演算子「|」(パイプ)を使用しで集合の和を取りました。

ご覧いただけるように、setAの要素である1、2、3とsetBの要素である3、4、5のすべてがCに含まれています。

要素3は重複しているので、一度だけの登場となります。

また、演算子パイプの代わりにunionメソッドでも同じ和集合を作ることができます。

出力結果は以下の通りです。

和集合ということで「+」演算子を使用できるのでは?と思うかもしれませんが、「+」演算子は残念ながら使えないので気をつけましょう。

積集合(「&」とintersectionメソッド)

では次に、積集合を作ってみましょう。

2つのset型オブジェクトの要素で、どちらの集合にも存在している要素のみを持った新しいset型オブジェクトのことを、積集合といいます。

図で表すと、青く塗られた部分が積集合になります。

intersection-640x480

積集合を作るには以下のサンプルコードをご覧ください。

出力結果は以下の通りです。

上のコードでは、演算子「&」(アンパサンド)を使用しで集合の積を取りました。

ご覧いただけるように、setAの要素である1、2、3とsetBの要素である3、4、5のうち、両方に含まれているのは要素3のみなので、setCには3のみが存在しています。

また、演算子アンパサンドの代わりにintersectionメソッドでも同じ和集合を作ることができます。

出力結果は以下の通りです。

ご覧いただけるように、先ほどと結果は変わりません。

差集合(「-」とdifferenceメソッド)

次に差集合を作ってみましょう。

2つのset型オブジェクトA,Bの要素で、AからAとBの積集合を削除した要素のみを持った新しいset型オブジェクトを、差集合と呼びます。

図で表すと青く塗られた範囲になります。

difference-640x480

差集合を作るには以下のサンプルコードをご覧ください。

出力結果は以下の通りです。

上のコードでは、演算子「-」(マイナス)を使用しで集合の差を取りました。

ご覧いただけるように、setAの要素である1、2、3とsetBの要素である3、4、5のうち、両方に含まれているのは要素3をAから削除した、1、2のみがCに含まれています。

また、differenceメソッドでも同じ差集合を作ることができます。

出力結果は以下の通りです。

ご覧いただけるように、結果は先ほどと同じとなりました。

排他的論理和集合(「^」とsymmetric_differenceメソッド)

では最後に、排他的論理和集合を作ってみましょう。

2つのset型オブジェクトA,Bの要素で、AとBで共通した要素以外を足し合わせた新しいset型オブジェクトを、排他的論理和集合と呼びます。

図で表すと青く塗られた部分になります。

symmetric_difference-640x480

排他的論理和集合を作るには以下のサンプルコードをご覧ください。

出力結果は以下の通りです。

上のコードでは、演算子「^」(キャレット)を使用し排他的論理和を取りました。

ご覧いただけるように、setAの要素である1、2、3とsetBの要素である3、4、5のうち、両方に含まれているのは要素3をAとBの和集合から削除した、1、2、4、5のみがCに含まれています。

また、symmetric_differenceメソッドでも排他的論理和を作ることができます。

出力結果は以下の通りです。

同じ結果を得る事が出来ました。

set型の応用的な使い方

では、set型の基本的な使い方を学んだところで、応用編にも少し触れてみましょう。

list型からset型を作る方法

既存のリスト型オブジェクトからset型オブジェクトを作成することも出来ます。

set関数の引数としてリストを指定するだけで、簡単に作成できてしまうのです。

以下のサンプルコードをご覧ください。

出力結果は以下の通りです。

上のコードでは、整数を含むリスト型オブジェクトを元にset型オブジェクトを作成しました。

リストには重複した要素がありますが、set型にはありません。

また、要素たちの順番もリスト型オブジェクトとは違うのがわかります。

まとめ

今回はPythonにおける基本的なset型オブジェクトの使い方をご紹介しました。

リスト型オブジェクトとはまた違う利便性があるので、使えると便利な型であること間違いありません。

皆さんもぜひset型オブジェクトの扱い方を覚えて、いろいろな作業をマスターしてくださいね。

Pythonカリキュラム無料公開中!

この記事はPython入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Python学習に必要な情報を一つにまとめていますので効率よくPythonを学ぶことが出来ます。この機会に是非活用していただければと思います。


Pythonを最短で習得したい方へ

元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Pythonを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」

このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、通常のスクールでは難しい、AI(人工知能)や機械学習、IoTについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Pythonならではの学習方法や、現役Pythonエンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta_bannar-ai2

非常識な結果を出す卒業生多数!

エンジニアキャリア戦略

人気記事セレクション

3000名以上来場の人気セミナーが開催決定

18歳で時給6000円だった侍エンジニア塾代表の木内より、『プログラミングで人生を変える』ための学習方法をお教えます。

0からプログラミングを習得し、フリーランスエンジニアになる方法プログラミング学習の効率を劇的に上げる学習メソッドを解説しますので、奮ってご参加ください。

  • 日付:3/30(日)
  • 時間:14:00〜17:00終了予定
  • 場所:当社 道玄坂オフィス
  • 住所:〒150-0043 東京都渋谷区道玄坂2丁目11-1 Gスクエア渋谷道玄坂 4F *Googleマップでは「東京都渋谷区道玄坂2丁目11-1」で検索してください。近隣にスクエア渋谷という別のビルがあるためご留意ください。
  • 参加費:無料
  • URL:https://seminar.sejuku.net/
詳しくは下の画像をクリックして弊社セミナー内容をご確認ください。

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

Kotono

Kotono

イタリア在住15年目の22歳です。イタリアの大学で情報科学&応用数学を学んでいます。主にJavaScriptやPythonについての記事を書いたりしています。