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

Python 使用for循环将两个变量一起迭代,python,for-loop,numpy,increment,Python,For Loop,Numpy,Increment,我该怎么做这样的事情呢 假设我有一个长度为5的数组x=np.array[1,2,3,4,5] 我希望I和j一起递增 这将向我抛出一条错误消息: TypeError Traceback (most recent call last) <ipython-input-4-37d0ddc3decf> in <module>() ----> 1 for i,j in range(len(x)): 2

我该怎么做这样的事情呢

假设我有一个长度为5的数组x=np.array[1,2,3,4,5]

我希望I和j一起递增

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

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说

我之所以需要它,是因为我必须在for循环中的某个条件下使用它。比如说,y[i][j],我希望这是0,0,然后是1,1,依此类推


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

y[i][i]
原始答案

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

for i in range(len(x)):
    j = i
    ... #rest of the code follows
您也可以使用enumerate,正如@Julien在评论中指出的,如下所示,但在我看来,较早的方法更好:

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

OP说

我之所以需要它,是因为我必须在for循环中的某个条件下使用它。比如说,y[i][j],我希望这是0,0,然后是1,1,依此类推


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

y[i][i]
原始答案

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

for i in range(len(x)):
    j = i
    ... #rest of the code follows
您也可以使用enumerate,正如@Julien在评论中指出的,如下所示,但在我看来,较早的方法更好:

>>> 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
所以问题是如何迭代两个变量,而不是为什么-

您可以尝试以下方法:

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


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

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

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

您可能想使用enumerate,但我不明白您想要的是什么output@JulienSpronck我希望I和j一起递增当然,但你希望它们都等于1,2,3,4,5?,因为我必须在for循环内的条件下使用它。比如说,y[i][j],我希望它是0,0,然后是1,1,依此类推,然后对rangelenx中的i做:。。。y[i][i]。您不需要两个变量您可能想使用enumerate,但我不理解您想要的output@JulienSpronck我希望I和j一起递增当然,但你希望它们都等于1,2,3,4,5?,因为我必须在for循环内的条件下使用它。比如说,y[i][j],我希望它是0,0,然后是1,1,依此类推,然后对rangelenx中的i做:。。。y[i][i]。你不需要两个变量在这种情况下,你可以简单地使用…`。。。在所有情况下都是这样,如果j总是等于i,就用i@JulienSpronck在OP澄清之前,他可能需要在for循环期间更改j;但一旦他澄清,这种可能性就变得渺茫了,因此当前答案的措辞也变得模糊了。我认为你应该删除枚举解决方案。做这样的事简直是胡说八道。@Maxime整个问题在我看来都是胡说八道。我把它放在那里是因为这是一种可能的方式来做OP最初在问题中提出的问题。在这种情况下,你可以简单地使用…`。。。在所有情况下都是这样,如果j总是等于i,就用i@JulienSpronck在OP澄清之前,他可能需要在for循环期间更改j;但一旦他澄清,这种可能性就变得渺茫了,因此当前答案的措辞也变得模糊了。我认为你应该删除枚举解决方案。做这样的事简直是胡说八道。@Maxime整个问题在我看来都是胡说八道。我之所以把它放在那里,是因为这是一种可能的方式,可以实现OP最初在问题中提出的要求。我完全同意。。我现在意识到我的错误了@用户3397243没问题:-我完全同意。。我现在意识到我的错误了@用户3397243没问题:-