I do not see what is wrong with itertools.product,
but if you hate it, you can use numpy.meshgrid:
>>> np.array(np.meshgrid([1,2,3],[4,5,6])).transpose()
array([[[1, 4],
[1, 5],
[1, 6]],
[[2, 4],
[2, 5],
[2, 6]],
[[3, 4],
[3, 5],
[3, 6]]])
Alan Isaac