我需要迭代不包含特定元素的集合的副本。直到现在我这样做:
for element in myset:
if element != myelement:
...
但是我想要这样的东西,在一行中:
for element in myset.copy().remove(myelement):
...
显然这是行不通的,因为
remove
方法返回 None.
使用集差运算符。
for element in myset - {myelement}:
...
这将创建一个新集合,其中包含
myset
中不在 {myelement}
中的元素(即 myelement
本身)。
这就是你想要的吗?
myset = {1, 2, 3, 4}
for element in myset - {3}:
print(element)
输出:
1
2
4
你是正确的,
remove()
在成功时返回 None
而不是结果集,它在不支持链接的情况下就地运行。但是,像 -
这样的中缀运算符将被计算并返回结果。从某种意义上说,您可以将 set1 - set2
视为 -(set1, set2)
,它确实会返回结果(如果您愿意,也可以是 set1.-(set2)
)。
使用过滤器
for element in filter(lambda x: x != element_to_ignore, element_list):
do_stuff()
只需对一组不需要的元素使用集合差分操作
^
:
a = {1, 2, 3, 4, 5}
b = 3
for i in a ^ {b}:
print(i)