営業時間:平日9:00~17:00

プログラミング

Python基礎編:setの集合

saori
Python基礎編:setの集合

setの基本的な扱い方については、下記の2つの記事で説明しました。今回はsetを使って、様々な集合を作ってみます。

setの集合をつくる

setを使うと、以下の判定が簡単にできるようになります。

  • 集合
  • 和集合
  • 差集合
  • 積集合
  • 排他的論理和集合(対称差集合)

このように様々な集合がありますが、言葉で説明するよりも図を見た方が分かりやすいと思いますので、各項目で図を示していきます。

集合とは

setにおける集合とは、文字や数字などの集まりの事です。set()を使うと重複しないように管理されることになります。このset()そのものが集合と呼ばれるものです。

分かりやすくするために、2つの文字列をset()を使って集合に変換してみましょう。

まず、8行目で「python」という文字列は、「o」「p」「h」「n」「t」「y」という文字の集まりで出来ている、ということが示されました。

そして9行目で、「egg」は「g」と「e」という文字の集まりで出来ていることが示されています。

これが「集合」です。

和集合

次に和集合についてです。和集合は以下の図の青色がついたところだけを取り出します。

取り出すには「|(パイプ)」という演算子を使います。

次の2つのsetがあるとしましょう。

A = {5,10,15,20,25}

B = {3,6,9,12,15}

Aは5の倍数、Bは3の倍数です。この2つに入っているすべての数字を取り出すのが和集合です。新しい変数「C」を作って、AとBの間に「|」を入れます。

「15」は重複しているので1個だけ出力されます。図で表すとこのような感じですね。

また、「|」を使う代わりに「union()」でも和集合を作ることができます。

「|」でも「union」でも、出力結果は同一となりました。

差集合

差集合は以下の図の青色がついたところだけを取り出します。取り出すには「-(マイナス)演算子」を使います。和集合では「+(プラス)」は使えませんが、差集合では「-(マイナス)」が使えます。

先ほどと同じAとBのsetを使って差集合を取り出しましょう。

図で表すとこのような感じですね。

出力結果を見ると、5の倍数の集まりから、3の倍数でもある「15」を除いた数だけを取り出しています。

また、「-(マイナス)」の代わりに「difference()」でも差集合を作ることができます。

「-」でも「difference」でも、出力結果は同一となりました。

積集合

次に積集合を作ってみましょう。積集合は以下の図の青色がついたところだけを取り出します。どちらの集合にも存在している要素のみを取り出す、ということですね。

取り出すには「&(アンパサンド)」という演算子を使います。

出力結果と図で確認すると、「15」だけが出力されています。

また、「&(アンパサンド)」の代わりに「intersection()」を使うこともできます。

「&」でも「intersection」でも、出力結果は同一となりました。

排他的論理和集合(対称差集合)

最後に、排他的論理和集合についてです。排他的論理和集合は以下の図の青色がついたところだけを取り出します。AとBの共通の要素を除いて取り出すということですね。

取り出すには「^(キャレット)」という演算子を使います。

図で表すとこのようになります。5の倍数でもあり、3の倍数でもある「15」以外が出力されました。

また、「^」の代わりに「symmetric_difference()」でも同じように、排他的論理和集合を作ることができます。

「^」でも「symmetric_difference」でも、出力結果は同一となりました。

まとめ

今回の記事では、setでよく使われる様々な演算子を紹介しました。setはlistの約100倍もの速度で結果を出力することができるようです。

その理由は

  • listでは全ての要素に対して1つずつ一致しているかどうかを探す
  • setでは様々な判定を使うことで絞り込むことが出来る

ということからです。

要素の数が膨大になればなるほど、listよりもsetの方がより早く処理できるということです。たくさんの処理を必要とする場合は、setを有効活用しましょう。

あなたにオススメの記事

沖縄で依頼したガイドの人は行く先をMacBookで調べる人だった

沖縄で依頼したガイドの人は行く先をMacBookで調べる人だった

4月23日はセブンのnanacoカードのサービスが開始された日

阿佐ヶ谷七夕祭り 出店・イベント編

阿佐ヶ谷七夕祭り【出店・イベント編】

8月5日はタクシーの日

8月5日はタクシーの日

ForeAthlete 245 Musicの個人的レビュー

ForeAthlete 245 Musicの個人的レビュー

Python入門:インストールして環境を構築しよう(Windows10版)

AI(人工知能)が搭載されたロボット

Python基礎編:リストの書き方とルール、出力→追加→削除

家庭菜園ならぬ事務所栽培を紹介します【キュウリ編】

家庭菜園ならぬ事務所栽培を紹介します【キュウリ編】

一眼カメラ「EOS Kiss X10」のレンタルが始まったよ!

一眼カメラ「EOS Kiss X10」のレンタルが始まったよ!

下地島空港から飛び立った飛行機からの眺め

【宮古島】下地島空港から飛び立った飛行機からの眺め

Python基礎編:辞書(ディクショナリー)の変更・追加・削除

Python基礎編:辞書(ディクショナリー)の変更・追加・削除

こんな場面にMacBookのレンタルはいかがでしょうか

日本語能力があるかないかで人生どうなるかって話

日本語能力があるかないかで人生どうなるかって話

6月14日発売予定キングダムのウェアラブルペン「INF10(インフォ)」

6月14日発売予定キングダムのウェアラブルペン「INF10(インフォ)」

SPONSOR