列表中列表的所有可能组合
我现在急需一些关于如何合并列表的算法帮助。假设我有以下这种数据结构:
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最简单的方法来遍历这个结构,获取所有的组合。我相信之前肯定有人做过这个,但我在谷歌和StackOverflow上搜索了几次,还是找不到合适的关键词来找到解决这个问题的算法。
有没有人能给我一些建议,告诉我最简单的算法该怎么做呢?
2 个回答
10
你只需要用一下 itertools.product
这个工具,它正好能完成你想做的事情。如果你对这个算法感兴趣,可以去看看它的源代码。
3
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序中使用它。这就像你从冰箱里拿出食材,然后用它们做饭一样。
有些时候,我们会遇到一些问题,比如数据格式不对,或者数据缺失。这就像你在做饭时发现缺少某种调料,可能会影响到最后的味道。
为了避免这些问题,我们可以在程序中加入一些检查,确保数据是正确的。这就像在做饭前先检查一下冰箱,看看有没有需要的食材。
总之,处理数据的时候要小心,确保一切都在掌控之中,这样才能做出美味的“菜肴”。
itertools.product(*fields)