set.remove(x) : delete x from set, if x doesn't exist, KeyError raised up.
set.discard(x) : delete x if x in set
为什么我们需要同时使用这两个功能?
如果有必要,为什么list函数只有remove()?
答案 0 :(得分:2)
根据情况,您可能需要检查删除是否成功,或者只是尝试删除某些内容而无需确认。
因此,对于这些不同的情况,提供了两种方法以便用户灵活使用。
例如,如果您只想删除集合中低于10的所有数字,则只需拨打set.discard(x)
但是,如果您想从某个集合中删除某些内容并知道它是否实际上位于该集合中,那么您将使用set.remove(x)
关于为什么lists
没有discard()
的问题,这只是一个实施问题,sets
和lists
可能有两种类型被创建用于不同的目的。此外,您可以按照以下方式轻松执行discard()
中的lists
:
try:
list.remove(x)
except ValueError:
pass