Pythonのset
(セット)は、重複のないデータを扱うときに便利な機能です。
fruits = {"apple", "banana", "orange"}
このように書くと、同じものが2つ入ることはありません。また、順番は決まっていないという特徴があります。
この記事では、set
に対して「要素を追加したり削除したりする方法」を、基本的な使い方から注意点までやさしく説明します。
setに要素を追加する方法

add()メソッド(ひとつずつ追加)
colors = {"red", "blue"}
colors.add("green")
print(colors) # 結果: {'red', 'blue', 'green'}
説明:
add()
は、セットにひとつの要素を追加します- すでにある要素を追加しようとしても、重複は作られません
- リストや辞書など、変更できるデータは追加できません
例:重複の確認
numbers = {1, 2, 3}
numbers.add(2) # すでにある2を追加
print(numbers) # 結果: {1, 2, 3} (変化なし)
update()メソッド(まとめて追加)
colors = {"red", "blue"}
colors.update(["yellow", "purple"])
print(colors) # 結果: {'red', 'blue', 'yellow', 'purple'}
説明:
update()
は、複数の要素をまとめて追加できます- リスト、タプル、他のセットなど、繰り返し処理できるものを追加できます
- すでにある要素は無視されます
例:他のセットから追加
set1 = {"a", "b"}
set2 = {"c", "d"}
set1.update(set2)
print(set1) # 結果: {'a', 'b', 'c', 'd'}
まとめ
- ひとつだけ追加 →
add()
- たくさん追加 →
update()
- 重複は自動的に取り除かれる
setから要素を削除する方法

remove()メソッド(指定した要素を削除)
colors = {"red", "blue", "green"}
colors.remove("red")
print(colors) # 結果: {'blue', 'green'}
注意点: 存在しない要素を削除しようとするとエラーになります
colors = {"red", "blue"}
colors.remove("yellow") # エラー: KeyError
discard()メソッド(安全に削除)
colors = {"red", "blue", "green"}
colors.discard("yellow") # 存在しないがエラーにならない
print(colors) # 結果: {'red', 'blue', 'green'}
説明:
discard()
は、存在しない要素を指定してもエラーになりません- 安全に削除したいときに使います
pop()メソッド(ランダムに削除)
colors = {"red", "blue", "green"}
removed_color = colors.pop()
print(f"削除された色: {removed_color}")
print(f"残った色: {colors}")
説明:
pop()
は、セットからランダムにひとつの要素を取り出します- どの要素が削除されるかは分からない
- 削除された要素は戻り値として取得できます
clear()メソッド(全部削除)
colors = {"red", "blue", "green"}
colors.clear()
print(colors) # 結果: set() (空のセット)
説明:
clear()
は、セットの中身をすべて削除します- セット自体は残り、空の状態になります
削除方法のまとめ
方法 | 特徴 |
---|---|
remove() | 存在しない要素→エラーが発生 |
discard() | 存在しない要素→エラーなし |
pop() | ランダム削除・削除した要素を取得可能 |
clear() | セット全体を空にする |
よくある間違いと注意点

add()でリストを追加しようとするエラー
間違った例:
s = set()
s.add([1, 2]) # エラー: TypeError
理由: セットは変更できないデータのみを保存できます。リストは変更可能なので追加できません。
正しい方法:
s = set()
s.add((1, 2)) # タプルなら追加可能
print(s) # 結果: {(1, 2)}
remove()で存在しない要素を削除しようとするエラー
間違った例:
s = {"a", "b"}
s.remove("c") # エラー: KeyError
対策方法:
方法1:事前にチェックする
s = {"a", "b"}
if "c" in s:
s.remove("c")
方法2:discard()を使う
s = {"a", "b"}
s.discard("c") # エラーにならない
方法3:try-except文を使う
s = {"a", "b"}
try:
s.remove("c")
except KeyError:
print("要素が見つかりませんでした")
順番に意味を持たせてはいけない
セットは順序が保証されないため、「最初の要素」や「最後の要素」という考え方はできません。
間違った考え方:
s = {"apple", "banana", "orange"}
# 「最初の要素」という概念は存在しない
正しい使い方:
s = {"apple", "banana", "orange"}
# 特定の要素があるかどうかをチェック
if "apple" in s:
print("りんごがあります")
実践的な使用例
重複を取り除く
# リストから重複を取り除く
numbers_list = [1, 2, 2, 3, 3, 3, 4]
unique_numbers = set(numbers_list)
print(unique_numbers) # 結果: {1, 2, 3, 4}
# 再びリストに戻す
unique_list = list(unique_numbers)
print(unique_list) # 結果: [1, 2, 3, 4]
複数のリストから共通要素を見つける
list1 = ["apple", "banana", "orange"]
list2 = ["banana", "grape", "apple"]
set1 = set(list1)
set2 = set(list2)
common = set1 & set2 # 共通要素
print(common) # 結果: {'apple', 'banana'}
まとめ
操作 | メソッド | 使う場面 |
---|---|---|
要素追加 | add() | ひとつの要素を追加したい |
要素追加 | update() | 複数の要素をまとめて追加したい |
要素削除 | remove() | 確実に存在する要素を削除したい |
要素削除 | discard() | 安全に要素を削除したい |
要素削除 | pop() | ランダムに要素を取り出したい |
全削除 | clear() | セットを空にしたい |
おわりに
Pythonのset
型は、重複を取り除いたり、高速で処理したり、集合の計算をするときに便利です。
特に要素の追加・削除を使いこなせれば、データの整理や集約作業でとても役立ちます。
コメント