如何在python中的单个for循环中使用2个索引变量
在如何在python中的单个for循环中使用2个索引变量,python,for-loop,Python,For Loop,在C语言中,我们可以在一个循环中使用两个索引变量,如下所示 for (i = 0, j = 0; i < i_max && j < j_max; i++, j++) for(i=0,j=0;i
C
语言中,我们可以在一个循环中使用两个索引变量,如下所示
for (i = 0, j = 0; i < i_max && j < j_max; i++, j++)
for(i=0,j=0;i
有人能告诉我们如何在Python
中做到这一点吗?使用zip
我们可以做到这一点
>>> i_max = 5
>>> j_max = 7
>>> for i, j in zip(range(0, i_max), range(0, j_max)):
... print str(i) + ", " + str(j)
...
0, 0
1, 1
2, 2
3, 3
4, 4
在Python中,可以使用iterable:
中i,j的语法。当然,在这种情况下,iterable必须返回一对值。因此,对于您的示例,您必须:
- 定义
i
和j
- 构建从两个列表返回一对值的iterable:
zip()
在本例中是您的朋友(如果列表大小不同,它将在最短列表的最后一个元素处停止)
- 在iterable:
以下是一个例子:
i_max = 7
j_max = 9
i_values = range(i_max)
j_values = range(j_max)
for i,j in zip(i_values,j_values):
print(i,j)
# 0 0
# 1 1
# 2 2
# 3 3
# 4 4
# 5 5
# 6 6
如果第一个答案不够;要考虑不同大小的列表,一个可能的选项是:
a = list(range(5))
b = list(range(15))
for i,j in zip(a+[None]*(len(b)-len(a)),b+[None]*(len(a)-len(b))):
print(i,j)
或者,如果您想在较短的列表中循环:
from itertools import cycle
for i,j in zip(range(5),cycle(range(2)):
print(i,j)
你可能是指(i=0,j=0,…)的
?是的,输入错误。看一下。是的,我知道了。有了zip,我们可以做到这一点。可能的副本我不会同意。这并不能解释不同大小的列表,是吗?@rashok提供了一个很好的解决方案。适用于同等大小的列表。如果需要数据帧,可以创建(i,j)元组并附加到列表中。该列表可用于创建dataframe。与@rashok提供的答案相同