作者adrianshum (Alien)
看板Python
标题Re: [问题]迭代层数未知
时间Tue Apr 16 12:36:59 2019
其实只要把问题分解,再配合现有一些工具
(主要就是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
上面就可以让你遍历所有组合了
(当然可以写得更简短。你搞明白再自己试吧)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 45.64.241.235
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1555389421.A.E48.html
1F:推 cutekid: 推(Y) 04/16 14:00
2F:推 ThxThx: 此篇正解 itertools >> for loop 04/17 09:29
3F:推 keven92110: 感谢楼主建议,我会再多研究itertools 04/18 17:16