首页 > 解决方案 > 双循环计数器,内部和外部计数

问题描述

我想知道以下计数方式是否有一个众所周知的公式:

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 不一样...

标签: pythonalgorithmnested-loops

解决方案


让我们考虑这条线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)]

推荐阅读