在组合列表中的列表时,我迫切需要一些算法帮助。假设我有以下数据结构:
fields = [ ['a1', 'a2', 'a3'], ['b1', 'b2', 'b3'], ['c1', 'c2', 'c3'], ['d1', 'd2', 'd3'] ]
我正在尝试编写一个生成器(Python),它将产生每个可能的项目组合,以便以下代码:
for x in thegenerator(fields): print(x)
会给出以下输出:
['a1', 'b1', 'c1', 'd1'] ['a1', 'b1', 'c1', 'd2'] ['a1', 'b1', 'c1', 'd3'] ['a1', 'b1', 'c2', 'd1'] ['a1', 'b1', 'c2', 'd2'] ['a1', 'b1', 'c2', 'd3'] ... ['a3', 'b3', 'c3', 'd3']
然而,我的思维方式今天完全没有了,所以我无法想象我最好如何迭代结构以使用Python获得所有组合最干净的方式。我确信之前已经有人这样做了,但是在google和stack上进行了几次搜索后,我放弃了找到正确的关键字组合,以找到适合此问题的算法。
任何想法是什么最干净的算法来解决这个问题?
答案 0 :(得分:10)
只需使用itertools.product
,它就完全符合您的要求。如果您对算法感兴趣,可以随时查看源代码。
答案 1 :(得分:3)
itertools.product(*fields)