Python 速習チュートリアル

Python セット要素の削除

1. 要素を削除する主なメソッド

セット(Set)から特定の項目を削除するには、remove() または discard() メソッドを使用します。この2つは「要素が存在しない時」の挙動が決定的に異なります。

1.1 remove() メソッド

指定した項目を削除します。もしその項目が存在しない場合、エラー(KeyError)が発生します。

thisset = {"apple", "banana", "cherry"}
thisset.remove("banana")
print(thisset)

1.2 discard() メソッド

指定した項目を削除します。もしその項目が存在しなくても、エラーは発生せず、プログラムはそのまま続行されます。

thisset = {"apple", "banana", "cherry"}
thisset.discard("banana")
print(thisset)

2. pop() メソッドによる削除

pop() メソッドを使用すると、要素を1つ削除できます。ただし、セットは順序がない(Unordered)ため、どの要素が削除されるかは完全にランダムです。

また、pop() は「削除された要素」を戻り値として返します。

例:ランダムに1つの要素を削除する

thisset = {"apple", "banana", "cherry"}
x = thisset.pop()

print(x)       # 削除された項目
print(thisset) # 残ったセット

エンジニアの注意点:
セットにおける pop() は、リストの pop()(末尾を消す)とは全く別物です。何が消えるか予測不能なので、特定のデータを取り扱う際には注意が必要です。

3. セットを空にする・削除する

中身をすべて消去したい、あるいは変数そのものを消し去りたい場合の方法です。

3.1 clear() メソッド

セット内のすべての要素を削除し、空のセットにします。

thisset = {"apple", "banana", "cherry"}
thisset.clear()
print(thisset) # 結果: set()

3.2 del キーワード

セット(変数)そのものを完全に削除します。

thisset = {"apple", "banana", "cherry"}
del thisset

# これ以降に print(thisset) を実行するとエラーになります

4. 削除メソッドの使い分けまとめ

メソッド存在しない項目を指定した場合戻り値
remove()エラーになるなし
discard()何もしない(安全)なし
pop()(空のセットならエラー)削除された要素
clear()なし

実務では、「確実に存在しているはずのものを消したい(なければ異常事態)」なら remove() を、「あってもなくてもとりあえず消しておきたい」なら discard() を使うのがセマンティックで良いコードです。