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/