Счетчик двойной L oop с подсчетом как на внутренний, так и на внешний - PullRequest
0 голосов
/ 14 февраля 2020

Я хотел бы знать, есть ли известная формула для следующего способа подсчета:

count = 0
for i in range(n):
   for j in range(m):
      count = count + 1
   count = count + 10

Заранее большое спасибо,

Cayo

РЕДАКТИРОВАТЬ 1:

Спасибо Эрнест, вы правы, но это не совсем проблема. Извините, я не был достаточно ясен, позвольте мне лучше объяснить мою проблему. Я не просто хочу считать, мне нужно использовать этот счетчик внутри l oop. У меня есть двумерный массив сглаживания, и я хочу получить доступ только к суб-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

И вы увидите, что ve c и vec2 не совпадают ...

Ответы [ 3 ]

2 голосов
/ 14 февраля 2020

Давайте рассмотрим, что строка count = count + 10 не существует, тогда она будет просто:

count = i*m + j

Рассмотрим n = 3 и m = 3. Значения счетчика равны 0, 1, 2, 3, 4 .. как только вы добавите строку count += 10, вы просто добавляете кратные 10 к значению счетчика каждый раз, когда завершается внешний l oop.

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)]
1 голос
/ 14 февраля 2020

Есть действительно простое решение

count = n*(10+m)
0 голосов
/ 14 февраля 2020

Дай мне попробовать. Если я правильно понимаю, вам просто нужно текущее (не окончательное) значение count внутри l oop. Так что это должно сделать:

# In the inner loop    
count = i * 10 + j
...