在Python中生成组合

18 投票
3 回答
27705 浏览
提问于 2025-04-16 00:45

我不太确定在Python中该怎么做,如果这甚至可能实现。我需要做的是从三个独立的数组创建一个数组(或者说矩阵,或者向量?)。每个数组都有4个元素,像这样:

Class1 = [1,2,3,4]
Class2 = [1,2,3,4]
Class3 = [1,2,3,4]

现在我想要的是返回这三个类的所有可能组合。

举个例子:

1 1 1
2 1 1
3 1 1
4 1 1
1 2 1
2 2 1
3 2 1
4 2 1...

...这样一直到64行(4个元素 * 每个类16种可能组合 = 64行)

我希望在Python中有办法做到这一点。我相信是有的,但我不确定最有效的方法是什么。也许可以用一个“for in”循环来遍历每个类的每个元素?或者现在我在研究这个,itertools可以处理这个吗?

提前感谢任何提供的帮助。

3 个回答

2

查看Python的 itertools 标准 模块

itertools.combinations(iterable, r)

从输入的可迭代对象中返回长度为r的子序列。

9

最简单的方法:

for i in Class1:
    for j in Class2:
        for k in Class3:
            print (i,j,k)
43

你想要的这个东西叫做笛卡尔积

import itertools

iterables = [ [1,2,3,4], [88,99], ['a','b'] ]

for t in itertools.product(*iterables):
    print t

撰写回答