I often find myself doing this:
for x in range(x_size): for y in range(y_size): for z in range(z_size): pass # do something here
If you've got numpy as a dependency already, numpy.ndindex will do the trick ...
numpy
>>> for x,y,z in np.ndindex(2,2,2): ... print x,y,z ... 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1