Skip to main content
 首页 » 编程设计

python之对于集合类型,为什么我们同时需要 discard() 和 remove() 函数

2024年11月01日31tintown

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