プログラミングの用語一覧へ
このページの目次
プログラミング初級図解あり

セットとは?

読み方:セット

最終更新:2026/08/18

3秒でわかる

同じ値を 2 つ以上持たず、順序も持たないデータ構造。含まれているかの判定が要素数によらず速く、重複除去や集合演算に向いています。

30秒図解

集合Aの1 2 3と集合Bの2 3 4を重ね、共通部分と和と差を示す図
集合は重複しない値の集まりです。積集合は両方にある値、和集合はどちらかにある値、差集合は片方だけの値です。

もう少し詳しく

どういうものか

セット (集合) は、同じ値を 2 つ以上持たないデータ構造です。要素に順番の概念が無く、番号で取り出すことはできません。その代わり、ある値が入っているかどうかの判定が非常に速く、要素が 10 件でも 100 万件でもほぼ同じ時間で終わります。内部でハッシュ表を使い、値そのものから格納位置を計算しているためです。Python の set、JavaScript の Set、Java の HashSet がこれにあたります。

なぜ必要か

リストに対して「この値が含まれるか」を調べると、先頭から順に比較するため、要素数に比例して遅くなります。1 万件のリストに対して 1 万回の判定を行うと 1 億回の比較になり、体感で分かるほど待たされます。同じ処理をセットで行うと一瞬で終わります。

重複の除去にも使えます。ログから利用者 ID の種類数を数えるような処理は、セットに入れて件数を取るだけで済みます。

具体例

ids = [3, 1, 3, 7, 1] unique = set(ids) # {1, 3, 7} print(len(unique)) # 3 print(7 in unique) # True a = {1, 2, 3} b = {2, 3, 4} print(a & b) # {2, 3} 共通部分 print(a | b) # {1,2,3,4} 和 print(a - b) # {1} 差
const s = new Set([3, 1, 3, 7]); s.add(9); console.log(s.has(7), s.size); // true 3+1 console.log([...s]); // <a href="/glossary/array" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">配列</a>へ戻す

似た用語との違い

構造重複順序主な用途
配列 / リストありあり並び順が意味を持つデータ
セットなしなし存在判定、重複除去、集合演算
辞書 / マップキーは重複なし実装によるキーに値を紐づける


セットは、値だけを持つ辞書だと考えると理解しやすくなります。

つまずきやすいところ

順序が保証されないことを忘れると、表示順が実行のたびに変わるバグになります。画面に出す前には必ず並べ替えます。JavaScript の Set は挿入順を保つ仕様ですが、Python の set は保ちません。言語をまたぐと前提が変わります。

もうひとつは、変更できる値を入れられないことです。Python でリストを set に入れようとするとエラーになります。ハッシュ値が途中で変わると位置が狂うためで、タプルに変換してから入れます。

辞書やオブジェクトを重複除去したい場合も注意が要ります。JavaScript の Set は参照で同一性を判断するため、中身が同じオブジェクトでも別物として両方残ります。判定に使いたい項目を文字列にしてから入れる必要があります。

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地セットプログラミング

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

このコースが入っている学習分野

この用語を扱うコース

コース

Python入門:基礎文法編

74レッスン
コース

コンピューターサイエンス上級:アルゴリズムとデータ構造

50レッスン
コース

アルゴリズム道場 カメ師範の十の巻

10レッスン
Pythonコースの全編を見る