我有一套集合。我想找到仅在每个集合组合的交集中找到的项目数。我基本上想做与在维恩图中创建数字相同的事情。
一个基本的例子可能会更清楚。
a = set(1,2,5,10,12)
b = set(1,2,6,9,12,15)
c = set(1,2,7,8,15)
我最终应该计算出仅在以下位置找到的项目:
- 一种
- b
- C
- a 和 b 的交点
- a 和 c 的交点
- b 和 c 的交点
- a、b 和 c 的交集
一种不可扩展的方法是
num_a = len(a - b - c) # len(set([5,10])) -> 2
num_b = len(b - a - c) # len(set([6,9])) -> 2
num_c = len(c - a - b) # len(set([7,8])) -> 2
num_ab = len((a & b) - c) # 1
num_ac = len((a & c) - b) # 0
num_bc = len((b & c) - a) # 1
num_abc = len(a & b & c) # 2
虽然这适用于 3 套我的套集合不是静态的。