【初心者向け】Pythonのset型での要素の追加・削除方法まとめ

python

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型は、重複を取り除いたり、高速で処理したり、集合の計算をするときに便利です。

特に要素の追加・削除を使いこなせれば、データの整理や集約作業でとても役立ちます

コメント

タイトルとURLをコピーしました