在Python中生成组合
我不太确定在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