python - 对于set类型,为什么我们需要discard()和remove()函数?

标签 python

set.remove(x) : delete x from set, if x doesn't exist, KeyError raised up.

set.discard(x) :  delete x if x in set

为什么我们同时需要这两个功能?

如果有必要,为什么列表函数只有remove()?

最佳答案

根据具体情况,您可能需要检查删除是否成功,或者只是尝试删除某些内容而不需要确认。

因此,针对这些不同的情况,提供了两种方法以供用户灵活选择。

例如,如果您只是想删除集合中小于 10 的所有数字,则只需调用 set.discard(x)

但是,如果您想从集合中删除某些内容并首先知道它是否确实在集合中,则可以使用 set.remove(x)

对于为什么lists没有discard()的问题,这只是一个实现问题,两种类型,sets > 和 lists 可能是为了满足不同的目的而创建的。此外,您可以轻松地在 lists 中执行 discard(),如下所示:

try:
    list.remove(x)
except ValueError:
    pass

关于python - 对于set类型,为什么我们需要discard()和remove()函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832133/

相关文章:

python - 为什么当使用 os.system() 或 subprocess.Popen() 从 Python 调用时我的 MySQL 存储过程不执行?

Python urllib2.urlopen 返回 302 错误,即使页面存在

python - 无法使用 python 安装 azure-cognitiveservices-speech

Python 的 SQLAlchemy 不会清除辅助(多对多)表?

python - 如何在 BeautifulSoup 中得到想要的值?

python - 是否有 YSlow 的 Perl 替代品?

python - scrapy-selenium 驱动程序不遵循

python - 替换 Django 模板中的字符

python - 通过 SQLAlchemy 数据库反射创建模型

python - 使用 matplotlib 存储鼠标单击事件坐标