2016-09-15 24 views
0

给定数目我已经的这部分代码:的Python:串联回路

N = 4 
coa = [] 
for a in range(N): 
    for b in range(N): 
     for c in range(N): 
      for d in range (N): 
       coa.append(a,b,c,d) 

基本上,我需要为环尽可能多的串联数N。因此,如果N已经等于6,我将不得不添加其他两个字母为ef的for循环,并在coa.append()内添加相同的字母。是否有可能自动执行此操作,也就是说,通过改变N的整数值,即可完成所有操作,而无需键入它?

+0

使用'itertools.product' – jonrsharpe

回答

1

您可以使用itertools.productrepeat()

下面是一个例子:

In [3]: from itertools import product, repeat 

In [5]: 

In [5]: list(product(*repeat(range(3), 3))) 
Out[5]: 
[(0, 0, 0), 
(0, 0, 1), 
(0, 0, 2), 
(0, 1, 0), 
(0, 1, 1), 
(0, 1, 2), 
(0, 2, 0), 
(0, 2, 1), 
(0, 2, 2), 
(1, 0, 0), 
(1, 0, 1), 
(1, 0, 2), 
(1, 1, 0), 
(1, 1, 1), 
(1, 1, 2), 
(1, 2, 0), 
(1, 2, 1), 
(1, 2, 2), 
(2, 0, 0), 
(2, 0, 1), 
(2, 0, 2), 
(2, 1, 0), 
(2, 1, 1), 
(2, 1, 2), 
(2, 2, 0), 
(2, 2, 1), 
(2, 2, 2)] 
+1

非常感谢。对不起,如果我的问题是一个先例的重复。无论如何,我还没有能够理解以前的答案,而这一个是完美的! – Marco