在列表中组合列表时,我迫切需要一些算法帮助。假设我有以下数据结构:
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 上进行了几次搜索之后,我放弃了寻找正确的关键字组合,以便为这个问题找到合适的算法。
有什么想法可以解决这个问题的最干净的算法是什么吗?
最佳答案
只需使用 itertools.product
,它正是您想要做的。如果您对算法感兴趣,可以随时查看源代码。
关于python - 列表列表的所有可能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3427232/