如何自动在彼此之间定义m个循环以生成具有所有唯一组合的n ^ m行表?

时间:2019-07-09 12:21:38

标签: python-3.x

每n个项目可以有m个状态,我们可以通过m次迭代在彼此内部编写n个循环,但是问题是,当n更改为n + 1时,我们需要添加另一个循环...

我要为n = 3,m = 2生成的表如下:

m = 2
n = 3
for i in range(m):
        for j in range(m):
            for k in range(m):
                print(i+1, j+1, k+1)

1 1 1
1 1 2
1 2 1
1 2 2
2 1 1
2 1 2
2 2 1
2 2 2

当n = 4时,m = 2

for i in range(2):
    for j in range(2):
        for k in range(2):
            for l in range(2):
                print(i+1, j+1, k+1, l+1)
1 1 1 1
1 1 1 2
1 1 2 1
1 1 2 2
1 2 1 1
1 2 1 2
1 2 2 1
1 2 2 2
2 1 1 1
2 1 1 2
2 1 2 1
2 1 2 2
2 2 1 1
2 2 1 2
2 2 2 1
2 2 2 2

如何编写可以使用任何m和n值的代码?

1 个答案:

答案 0 :(得分:0)

如果您为作业使用正确的工具(在本例中为itertools.product),则会获得动态解决方案:

from itertools import product

m = 2
n = 3

print('\n'.join(' '.join(map(str, prod)) for prod in product(range(1, m + 1), repeat=n)))

输出

1 1 1
1 1 2
1 2 1
1 2 2
2 1 1
2 1 2
2 2 1
2 2 2

现在,如果发生某些更改,只需更改mn的值即可。