Поскольку вы не указали обработку в промежуточных циклах - только в самом внутреннем цикле, я чувствую, что вам действительно нужен итератор для вашей последовательности индексов:
Пусть max_dim
будетразмерность вашего пространства, количество измерений.
max_val = 100
one_dim = list(range(max_val))
all_dim = [one_dim] * max_val
all_dim
теперь список списков, по одному для каждого измерения.Каждый список содержит значения 0-99, те самые значения, которые используются вашими вложенными циклами.Теперь о магических шагах от itertools
:
from itertools import product
for index_list in product(*all_dim):
# do your stuff; the index_list is [i1, i2, i3, ...]
Это будет перебирать все желаемые измерения.Для небольшого примера, вот как выглядит последовательность product
только с двумя значениями и тремя измерениями:
>>> all_dim = [[0,1]] * 3
>>> all_dim
[[0, 1], [0, 1], [0, 1]]
>>> list(product(*all_dim))
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
Это достаточно хорошо справляется с вашей проблемой?