如何从集合中移除多个元素?能否用单语句移除集合子集?
Python集合批量移除元素的方法
当然可以!Python的集合本身就提供了非常便捷的批量移除元素的方法,完全不用写循环一个个调用remove(),下面给你几种实用的方式:
原地修改原集合
如果你想直接在原集合上删除指定子集的元素,推荐用difference_update()方法,它会原地更新集合,只保留原集合中不在目标子集里的元素:s = {1, 2, 3, 4, 5} s.difference_update({1, 2, 3}) print(s) # 输出: {4, 5}还有个更简洁的运算符写法,用
-=,效果和上面完全一样:s = {1, 2, 3, 4, 5} s -= {1, 2, 3} print(s) # 同样输出: {4, 5}生成新集合(保留原集合)
如果不想改动原集合,而是要得到一个移除了指定元素的新集合,直接用-运算符做集合差集运算就行:s = {1, 2, 3, 4, 5} new_s = s - {1, 2, 3} print(s) # 原集合保持不变,输出: {1, 2, 3, 4, 5} print(new_s) # 新集合输出: {4, 5}
额外提一句:这些批量方法比循环调用remove()更高效,而且容错性更好——如果你的目标子集里有原集合不存在的元素,这些方法不会抛出异常(但remove()遇到不存在的元素会直接报错)。比如你写s -= {1,2,3,6},程序只会移除存在的1、2、3,完全不会崩溃。
内容的提问来源于stack exchange,提问作者Eugene Yarmash
相关产品推荐
相关产品推荐

