Re: [问题]迭代层数未知

楼主: adrianshum (Alien)   2019-04-16 12:36:59
其实只要把问题分解,再配合现有一些工具
(主要就是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
上面就可以让你遍历所有组合了
(当然可以写得更简短。你搞明白再自己试吧)
作者: cutekid (可爱小孩子)   2019-04-16 14:00:00
推(Y)
作者: ThxThx (洗洗睡)   2019-04-17 09:29:00
此篇正解 itertools >> for loop
作者: keven92110 (感恩师傅)   2019-04-18 17:16:00
感谢楼主建议,我会再多研究itertools

Links booklink

Contact Us: admin [ a t ] ucptt.com