我有一个包含数千个与此类似的集合的列表:

set_list = [a, b, c, d]

列表中的每个集合看起来都像这样:
a = set([1, 2, 3, 4, 5])
b = set([4, 5, 6, 7, 7, 9])
c = set([1, 2, 6, 8, 10, 12, 45])
d = set([11, 3, 23, 3, 4, 44])

我想执行设置操作:例如,列表中的每个设置都使用X-(YUZUAUB ...... etc),如下所示:
set_list中的所有元素上应用此操作后,新元素如下所示:
a = a.difference(b.union(c, d))
b = b.difference(c.union(a, d))
c = c.difference(d.union(b, a))
d = d.difference(a.union(c, b))

我该如何做到这一点?

最佳答案

一种可能性是利用 multiset module来预先计算set_list中所有元素的多集并集,如下所示:

from multiset import Multiset
union = sum(set_list, Multiset())
set_list = [s - (union - s) for s in set_list]

在这里,union - s以您的表示法计算Y ∪ Z ∪ A ∪ B...

有关仅使用标准库实现的方法(更详细地说),请参见Aran-Fey's answer

关于python - 在元素列表上设置操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51001660/

10-16 10:24