Python入門【集合(set)の使い方】

こんにちは、ミナトです。

複数の要素をもつデータ型にはリストやタプル、ディクショナリがあります。

今回はリストのように複数の要素を格納できる集合(set)について紹介します。

今回はリストのように複数の要素を格納できる集合(set)について紹介するな😆

Python入門【ディクショナリ(辞書型)の使い方】

2021年6月14日

Python入門【タプルの使い方】

2021年6月14日

Python入門【リストの使い方】

2021年6月13日
以下のような方を対象としています
  • 集合(set)の使い方を知りたい
  • Pythonでプログラミングを学びたい

集合(set)の使い方

集合とは?

集合はリストのように複数の要素を保持できるデータ型です。

リストの違いは要素が重複しないという点です。
また、インデックスを利用して要素を取り出すことができません。

集合(set)は和集合や差集合などを求める集合演算を扱えます。

集合の定義

集合を定義するには以下のように値を{}で囲います。

\{値, 値, 値 ・・・\}
s = {1, 2, 3, 4, 5}
print(s)
print(type(s))

## 出力
{1, 2, 3, 4, 5}
<class 'set'>

集合では、要素が重複しないように管理されます。

s = {1, 2, 2, 3, 3, 4, 5}
print(s)

## 出力
{1, 2, 3, 4, 5}

和集合の取得

setの和集合を得るには「|演算子」を利用します。
対称差は論理演算の論理和(OR)と同じような処理です。

s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = s1 | s2
print(s3)

## 出力
{1, 2, 3, 4, 5}

差集合の取得

setの差集合を得るには「-演算子」を利用します。

s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = s1 - s2
print(s3)

## 出力
{1, 2}

交わりの取得

setの交わりを得るには「&演算子」を利用します。
交わりは論理演算の論理積(AND)と同じような処理です。

s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = s1 & s2
print(s3)

## 出力
{3}

対象差の取得

setの対称差を得るには「^演算子」を利用します。
対称差は論理演算の排他的論理和(XOR)と同じような処理です。

s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = s1 ^ s2
print(s3)

## 出力
{1, 2, 4, 5}

集合(set)のメソッド

要素の追加

要素を使いするにはaddメソッドを利用します。

s = {1, 2, 3, 4, 5}
s.add(6)
print(s)

## 出力
{1, 2, 3, 4, 5, 6}

要素の削除

集合から要素を削除するにはremoveメソッドを利用します。

s = {1, 2, 3, 4, 5}
s.remove(3)
print(s)

## 出力
{1, 2, 4, 5}

集合を空にする

集合を空にするにはclearメソッドを利用します。

s = {1, 2, 3, 4, 5}
s.clear()
print(s)

## 出力
set()

集合の長さを取得する

集合でデータの長さ(数)を取得するにはlen関数を利用します。

s = {1, 2, 3, 4, 5}
print(len(s))

## 出力
5

集合の中から最大値を取得する

集合の中から最大値を取得するにはmax関数を利用します。

s = {1, 2, 3, 4, 5}
print(max(s))

## 出力
5

集合の中から最小値を取得する

集合の中から最小値を取得するにはmin関数を利用します。

s = {1, 2, 3, 4, 5}
print(min(s))

## 出力
1

集合の要素の合計値を取得する

集合の要素の合計値を取得するにはsum関数を利用します。

s = {1, 2, 3, 4, 5}
print(sum(s))

## 出力
15

まとめ

今回はPythonの集合(set型)について紹介しました。

集合はリストのように複数のデータをまとめて管理できるデータ型で、以下ようなの特徴があります。

集合の特徴
  • 複数の要素を保持できる
  • 要素は重複しないように管理される
  • 集合演算を利用できる。

最後まで読んでいただき、ありがとうございます。

この記事が、「面白いな」、「勉強になったな」という方は、ぜひ、SNSでシェアしていただけると嬉しいです。