python - 双循环计数器,内部和外部计数
问题描述
我想知道以下计数方式是否有一个众所周知的公式:
count = 0
for i in range(n):
for j in range(m):
count = count + 1
count = count + 10
提前谢谢了,
卡约
编辑1:
谢谢欧内斯特,你是对的,但这并不是真正的问题。对不起,我不够清楚,让我更好地解释我的问题。我不只是想数,我需要在内循环中使用这个计数器。我有一个 2D 展平数组,我只想访问这个数组的一个子 2D 区域。所以,实际上,我正在做的是:
count = 0
for i in range(n):
for j in range(m):
big_flatten_array(count) = value
count = count + 1
count = count + 10
编辑2:仅使用它不起作用
count = i * 10 + j
尝试检查值:
count = 0
for i in range(3):
for j in range():
k = i * 2 + j
vec[k] = count
vec2[k] = i * 10 + j
count = count + 1
count = count + 10
你会看到 vec 和 vec2 不一样...
解决方案
让我们考虑这条线count = count + 10
不存在,那么它只是:
count = i*m + j
考虑 n = 3 和 m = 3 所以计数值就像 0, 1, 2, 3, 4 .. 一旦添加 line count += 10
,每次外循环完成时,您只需将 10 的倍数添加到计数值.
0, 1, 12, 13, 24, 25... 或 0, 1, 10 + 2, 10 + 3, 20 + 4, 20 + 5...
所以表达式变成
count = (10*i) + (i*m+j)
你可以像这样得到所有的计数值:
count = [(10 * i) + (i * m + j) for i in range(n) for j in range(m)]