A 3-D grid of regularly spaced points
Question: I want to create a list containing the 3-D coords of a grid of regularly
spaced points, each as a 3-element tuple. I'm looking for advice on the most
efficient way to do this.

In C++ for instance, I simply loop over three nested loops, one for each
coordinate. In Matlab, I would probably use the meshgrid function (which would
do it in one command). I've read about meshgrid and mgrid in Python, and I've
also read that using numpy's broadcasting rules is more efficient. It seems to
me that using the zip function in combination with the numpy broadcast rules
might be the most efficient way, but zip doesn't seem to be overloaded in
numpy.


Answer: Use `ndindex`:

    
    
    import numpy as np
    ind=np.ndindex(3,3,2)
    for i in ind:
        print(i)
    
    # (0, 0, 0)
    # (0, 0, 1)
    # (0, 1, 0)
    # (0, 1, 1)
    # (0, 2, 0)
    # (0, 2, 1)
    # (1, 0, 0)
    # (1, 0, 1)
    # (1, 1, 0)
    # (1, 1, 1)
    # (1, 2, 0)
    # (1, 2, 1)
    # (2, 0, 0)
    # (2, 0, 1)
    # (2, 1, 0)
    # (2, 1, 1)
    # (2, 2, 0)
    # (2, 2, 1)
    

