我想创建一个函数,它接受一个或多个集合的列表,并查找列表中所有集合的对称差异,即结果应该是一组值,每个值仅包含在其中一个值中套。 (如果我对对称差异的理解是错误的,请纠正我。)
例如:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s3 = set([2, 3, 7])
>>> s4 = set([2, 5, 9])
>>> myfunc([s1, s2, s3, s4])
{1, 4, 5, 7, 9}
是否有内置的东西可以用来代替上面的myfunc
?或者我使用这样的东西:
def myfunc(sets: List[set]) -> set:
sd = set()
goners = set()
for s in sets:
still_ok = s - goners
sd = sd.symmetric_difference(still_ok)
goners = goners.union(s.difference(sd))
return sd
有没有更好/更有效/“Pythonic”的方法来做到这一点?