python - Python 中 set.discard 和 set.remove 方法之间的运行时差异?

标签 python set

official Python 2.7 docs这些方法听起来几乎相同,唯一的区别似乎是 remove() 会引发 KeyError 而 discard 不会。

我想知道这两种方法的执行速度是否存在差异。如果做不到这一点,它们之间是否存在任何有意义的差异(除了 KeyError)?

最佳答案

在一种情况下引发异常是一个非常有意义的区别。如果尝试从不存在的集合中删除元素会出错,您最好使用 set.remove()而不是 set.discard() .

这两种方法在实现上是相同的,除了与 set_discard() 相比。 set_remove() function添加行:

if (rv == DISCARD_NOTFOUND) {
    set_key_error(key);
    return NULL;
}

这引发了 KeyError .因为这是稍微多一点的工作,set.remove()是最慢的teeniest分数;您的 CPU 在返回之前必须进行一项额外的测试。但是,如果您的算法依赖于异常,那么额外的分支测试几乎无关紧要。

关于python - Python 中 set.discard 和 set.remove 方法之间的运行时差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27850073/

相关文章:

jquery - jQuery ajax 接受 attrib 有什么意义?它实际上有什么作用吗?

python - 用 Python 编写的 SQL 数据库 GUI

python - SQLAlchemy 中的多态所属关系?

python - pandas 数据框样式格式不打印指定的精度

c++ - STL Set inside Map ,奇怪的段错误和Valgrind分析

object - '/' 应用程序中的服务器错误。你调用的对象是空的

java - 为什么java "putAll"无法深复制Map的值元素?

python - 在打印相应值时跳过特定迭代的重复值 - 我的最终目标是将其写入 CSV 文件

python - 在 python 3 中散列数组或对象

python - 类型错误 : string indices must be integers (Python)