在C
语言中,我们可以像下面这样在单个for
循环中使用两个索引变量。
在C
语言中,我们可以像下面这样在单个for
循环中使用两个索引变量。
for (i = 0, j = 0; i < i_max && j < j_max; i++, j++)
有人能告诉我如何用Python
实现吗?
在C
语言中,我们可以像下面这样在单个for
循环中使用两个索引变量。
在C
语言中,我们可以像下面这样在单个for
循环中使用两个索引变量。
for (i = 0, j = 0; i < i_max && j < j_max; i++, j++)
有人能告诉我如何用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
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)
有一种可能的方法是迭代一个全面的列表。例如,如果您想获得类似于以下内容的东西
for r in range(1, 3):
for c in range(5, 7):
print(r, c)
which produces
# 1 5
# 1 6
# 2 5
# 2 6
for i, j in [[_i, _j] for _i in range(1, 3) for _j in range(5, 7)]:
print(i, j)
在Python中,您可以使用语法for i,j in iterable:
来实现这一点。当然,在这种情况下,可迭代对象必须返回一对值。因此,对于您的示例,您必须:
i
和j
值的列表for i,j in 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