如何在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提供的答案相同