python - 列表列表的所有可能组合

标签 python algorithm data-structures permutation

在列表中组合列表时,我迫切需要一些算法帮助。假设我有以下数据结构:

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/

相关文章:

java - 如何在Java中制作这种自定义算法?

java - 关于动态规划我需要了解什么?

c++ - 在给定 Sum 的未排序数组中配对

c# - 填充数组以避免索引超出数组错误边界的方法

从代理 IP 列表中选择最佳代理 IP 的算法

python - Django 模板 : Translate include with variable

python - Pandas :如何使用包含 np.nan 的字符串列保存到 hdf 数据帧

python - 如何定义 Pandas 中绘制图形的范围?

algorithm - 按字典顺序升序排序的日期字符串格式按时间顺序降序?

python - 使用 get_text 时“NoneType”对象不可调用 beautifulsoup 错误