У меня есть набор наборов. Я хочу найти количество элементов, которые находятся только в пересечении для каждой комбинации множеств. Я в основном хочу сделать то же самое, что создавать числа на диаграмме Венна.Подсчет пересечений для всех комбинаций в списке наборов
Основной пример может сделать его более ясным.
a = set(1,2,5,10,12)
b = set(1,2,6,9,12,15)
c = set(1,2,7,8,15)
я должен в конечном итоге с числом элементов найдено только в:
- в
- б
- с
- пересечение и б
- пересечение a и c
- пересечение 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-х наборов моя коллекция наборов не является статичным.
Спасибо. С помощью набора множеств приятно. –