python中set.intersection的对面?

2022-01-17 00:00:00 python set

问题描述

在 Python 中,您可以使用 a.intersection(b) 来查找两个集合共有的项目.

In Python you can use a.intersection(b) to find the items common to both sets.

有没有办法做到 disjoint 与此相反的版本?ab 不共有的项目;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.

如果 ab 都是集合,您也可以使用 ^ 运算符:

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.

相关文章