使用 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)):
我希望 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 说
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
。不需要第二个变量。
我该如何做这样的事情?
假设我有一个 x = np.array([1,2,3,4,5])
的数组 length 5
,
for i,j in range(len(x)):
我希望 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 说
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
。不需要第二个变量。