如何从Python集合中移除多个元素?调用discard方法移除元素失败求助
问题分析与解决方法
你代码里的问题出在set.discard()的用法上:这个方法只能接收单个元素作为参数,而你传的是一个生成器表达式x for x in a if len(x.split())<9——集合里根本不存在这个生成器对象,所以discard找不到要移除的元素,自然不会有任何效果。
给你两种可行的解决方式:
方式一:遍历符合条件的元素逐个移除
a = {'ab', 'z x c v b n m k l j h g f f d s a a', 'q w e r t y u i o p'} # 转成列表遍历,避免遍历原集合时修改集合导致迭代异常 for x in list(a): if len(x.split()) < 9: a.discard(x) print(a)
方式二:用集合推导式生成新集合(更简洁)
a = {'ab', 'z x c v b n m k l j h g f f d s a a', 'q w e r t y u i o p'} # 直接筛选出符合条件的元素组成新集合 a = {x for x in a if len(x.split()) >= 9} print(a)
两种方式执行后,都会得到你期望的输出:
{'z x c v b n m k l j h g f f d s a a', 'q w e r t y u i o p'}
内容的提问来源于stack exchange,提问作者Hello World
相关产品推荐
相关产品推荐

