0
2

More than 1 year has passed since last update.

【Python】set型のremoveとdiscardの違いと覚え方

Posted at

 競技プログラミングをやっていて、ふと「どちらも削除するものだけど、この2つの違いってなんだ?」と思い調べてみました。結論としては、取り除くものがそもそも存在しないときエラーを返すかどうかです。

removeとdiscardの共通事項

  • 集合から要素を削除するメソッド。
  • 複数指定はできない。
  • 要素を指定しない場合、エラーが出る。

removeとdiscardの違い

S = {one, two, three}

S.remove()
#エラー:remove() takes exactly one argument (0 given)
S.discard()
#エラー:discard() takes exactly one argument (0 given)

S.remove('four')
#KeyError: 'four'
S.discard('four')
#エラーは出ない

 先述の通り、要素を指定しなければどちらもエラーを出しますが、要素を指定して、それが含まれていない場合、removeはエラーを吐き出し、discardは吐き出しません。2つの違いはここにあります。

覚え方

 違いはわかってもいつも忘れるので、英語から理解して覚えようと思います。
 removeは、『ある場所から移動させるだけで、ものはまだある』discardは、『取り除き、廃棄してしまう』 というニュアンスがあります。なので、まだ存在しているニュアンスの強いremoveは、要素にないものを指定すると「そもそもそんなのないから移動させられないよ!」みたいにエラーを出すのかなと覚えました。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2