使用 for 循环将两个变量一起迭代

Using for loop to iterate two variables together

我该如何做这样的事情?

假设我有一个 x = np.array([1,2,3,4,5]) 的数组 length 5

for i,j in range(len(x)):

我希望 ij 一起递增。

这向我抛出一条错误消息:

TypeError                                 Traceback (most recent call last)
<ipython-input-4-37d0ddc3decf> in <module>()
----> 1 for i,j in range(len(x)):
      2     print i,j
      3 

TypeError: only length-1 arrays can be converted to Python scalars

我需要它的原因是因为我必须在 for 循环内的条件下使用它。比如,y[i][j],我希望它是 0,0,然后是 1,1,依此类推。

已编辑答案

OP 说

The reason I need this is because I have to use it in a condition inside the for loop. Like say, y[i][j] and I want this to be 0,0 then 1,1 and so on.

在那种情况下,您可以简单地使用:

y[i][i]

原回答

我不太确定你为什么要这样做,你可以将它设置在 for 循环的第一行:

for i in range(len(x)):
    j = i
    ... #rest of the code follows

您也可以使用 enumerate,正如@Julien 在评论中所指出的,如下所示(但 IMO,早期的方法更好):

>>> for i, j in enumerate(xrange(len(x))):
...     print i, j
... 
0 0
1 1
2 2

你可以试试这个:

for i, j in zip(range(len(x)), range(len(x))):
    print i, j

所以问题是关于如何迭代两个变量,而不是为什么 ;-)

为什么首先需要 j?如果 j 总是等于 i,只需使用 i。不需要第二个变量。