列表中列表的所有可能组合

1 投票
2 回答
592 浏览
提问于 2025-04-16 02:26

我现在急需一些关于如何合并列表的算法帮助。假设我有以下这种数据结构:

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)

撰写回答