6
これらのメソッドのofficial Python 2.7 docsはほぼ同じように聞こえますが、remove()はKeyErrorを送出しますが、discardはそうではないようです。Pythonのset.discardとset.removeメソッドの実行時の違いは?
これら2つの方法の実行速度に違いがあるのでしょうか。それに失敗すると、それらの間に意味のある違い(KeyErrorを除く)がありますか?
これらのメソッドのofficial Python 2.7 docsはほぼ同じように聞こえますが、remove()はKeyErrorを送出しますが、discardはそうではないようです。Pythonのset.discardとset.removeメソッドの実行時の違いは?
これら2つの方法の実行速度に違いがあるのでしょうか。それに失敗すると、それらの間に意味のある違い(KeyErrorを除く)がありますか?
例外を発生させるケースは、と非常に意味がある違いです。存在しないセットから要素を削除しようとすると、set.discard()
ではなくset.remove()
を使用することをお勧めします。
set_discard()
set_remove()
functionと比較ことを除いて2つの方法が、実装において同一では、行を追加:
if (rv == DISCARD_NOTFOUND) {
set_key_error(key);
return NULL;
}
これはKeyError
を上昇させます。これは若干多くの作業であるため、set.remove()
はと最も細いです。分数が遅くなります。あなたのCPUは戻ってくる前に1回余分なテストをしなければなりません。しかし、アルゴリズムが例外に依存する場合、追加の分岐テストはほとんど問題になりません。