python中set.intersection的对面?
问题描述
在 Python 中,您可以使用 a.intersection(b)
来查找两个集合共有的项目.
In Python you can use a.intersection(b)
to find the items common to both sets.
有没有办法做到 disjoint 与此相反的版本?a
和 b
不共有的项目;a
中的唯一项与 b
中的唯一项联合?
Is there a way to do the disjoint opposite version of this? Items that are not common to both a
and b
; the unique items in a
unioned with the unique items in b
?
解决方案
你在寻找对称差;仅出现在集合 a 或集合 b 中的所有元素,但不能同时出现:
You are looking for the symmetric difference; all elements that appear only in set a or in set b, but not both:
a.symmetric_difference(b)
来自 set.symmetric_difference()
方法文档:
From the set.symmetric_difference()
method documentation:
返回一个新集合,其中包含集合或其他中的元素,但不能同时包含两者.
Return a new set with elements in either the set or other but not both.
如果 a
和 b
都是集合,您也可以使用 ^
运算符:
You can use the ^
operator too, if both a
and b
are sets:
a ^ b
而 set.symmetric_difference()
为 other 参数采用任何可迭代对象.
while set.symmetric_difference()
takes any iterable for the other argument.
输出等价于(a | b) - (a & b)
,两个集合的并集减去两个集合的交集.
The output is the equivalent of (a | b) - (a & b)
, the union of both sets minus the intersection of both sets.
相关文章