2012-03-18 185 views
0

我想指望在这个基本的例子循环的数量:双for循环计数器蟒蛇

numSt = [] 
numSti = 0 
for i in xrange(0,2): 
    for j in xrange(0,2): 
     numSti += 1 
     numSt.append(numSti) 

我得到numSti: (1,2,1,2),而不是(1,2, 3,4)....

我的真实代码也是非常基本的,区别在于“2”被一个整数变量替换。

我的错误。代码是好的!然后我有:

for i in xrange(0,numStY_total): #ordered in rows 
    for j in xrange(0,numStX_total): 
     numSti += 1 
     numSt.append(numSti) 
     coordSt.append((i+1,j+1,numSt[j],x[j],y[i],z[0])) 

这就是为什么我得到1,2和1,2。相反,它应该是这样的:

 coordSt.append((i+1,j+1,numSt[counter],x[j],y[i],z[0])) 
+5

请问您可以发布您的真实代码。问题中的代码不会生成您报告的输出。使用剪贴板。 – 2012-03-18 18:56:28

+0

我用你的代码得到了正确的结果,numSt在最后是[1,2,3,4]。 – heinrich5991 2012-03-18 18:58:13

+0

邮政编码,重现问题或否则问题将被关闭。 – 2012-03-18 19:02:35

回答

0

我得到正确的结果:[1,2,3,4]

In [3]: numSt = [] 

In [4]: numSti = 0 

In [5]: for i in xrange(0,2): 
...:   for j in xrange(0,2): 
...:    numSti += 1 
...:    numSt.append(numSti) 
...: 

In [6]: numSt 
Out[6]: [1, 2, 3, 4] 
0

如果你在开始numSt=[]你的代码产生正确的结果添加initializiation。

我真正的代码也非常基本的,所不同的是,“2”是由 可变

,将工作过一个整数代替。邮政编码重现问题。否则我们无法提供帮助。

0

您可以使用枚举在循环中具有运行索引,itertools.product具有所有可迭代的组合。

from itertools import product 

numSt = [n for n, tup in enumerate(product(xrange(2), xrange(2)))] 

print(numSt) 

顺便说的xrange(0,2)是一样的xrange(2)

0

你真正的代码可能不会初始化numSt变量。它可能只存在于循环的第二个范围内。这将解释这种行为。