从集合中删除一个元素并返回集合

问题描述 投票:0回答:4

我需要迭代不包含特定元素的集合的副本。直到现在我这样做:

for element in myset:
    if element != myelement:
       ...

但是我想要这样的东西,在一行中:

for element in myset.copy().remove(myelement):
    ...

显然这是行不通的,因为

remove
方法返回 None.

python loops set
4个回答
2
投票

使用集差运算符。

for element in myset - {myelement}:
    ...

这将创建一个新集合,其中包含

myset
中不在
{myelement}
中的元素(即
myelement
本身)。


0
投票

这就是你想要的吗?

myset = {1, 2, 3, 4}

for element in myset - {3}:
    print(element)

输出:

1
2
4

你是正确的,

remove()
在成功时返回
None
而不是结果集,它在不支持链接的情况下就地运行。但是,像
-
这样的中缀运算符将被计算并返回结果。从某种意义上说,您可以将
set1 - set2
视为
-(set1, set2)
,它确实会返回结果(如果您愿意,也可以是
set1.-(set2)
)。


0
投票

使用过滤器

for element in filter(lambda x: x != element_to_ignore, element_list):
  do_stuff()

0
投票

只需对一组不需要的元素使用集合差分操作

^

a = {1, 2, 3, 4, 5}
b = 3

for i in a ^ {b}:
    print(i)
© www.soinside.com 2019 - 2024. All rights reserved.