其實只要把問題分解,再配合現有一些工具
(主要就是itertools 啦),整個問題就變很
簡單。
首先你有 n 個 list-of-set。你所謂「互相配
合」的第一步其實就是要從每個list 取一個
Element,從而找出所有可能的組合。
這用itertools.product() 就行了:
Eg:
a= [A, B , C]
b= [L, M, N]
c= [X, Y, Z]
itertools.product(a,b,c) 就會得到
(A,L,X) (A,L,Y) (A,L,Z) ... ( C, N,Z)
所有組合
要把每個組合(tuple-of-set) union 一起,
則只需做 set(itertools.chain(...))
所以假設你有一個list-of-list-of-set, 大概做:
foo = [ [ {1,2,3}, {3,4} ],
[{5,6}, {7,8}],
[{1,4,5}, {2,4,6}]]
for l in itertools.product(*foo):
s = set(itertools.chain(*l))
# do whatever you need
上面就可以讓你遍歷所有組合了
(當然可以寫得更簡短。你搞明白再自己試吧)