Often in scientific computing, we are interested in generating a full factorial design of a computational experiment (see, for example, http://www.socialresearchmethods.net/kb/expfact.php or https://en.wikipedia.org/wiki/Factorial_experiment). A typical application of this design is performing a grid search in hyperparameter tuning of machine learning models (see https://cloud.google.com/ml-engine/docs/tensorflow/hyperparameter-tuning-overview or https://en.wikipedia.org/wiki/Hyperparameter_optimization#Grid_search).
Assume that we are given a list of vectors and we want to generate all possible combinations of values taken from those vectors. For instance, if we have the x=[1,2] and y=['a', 'b'] vectors, we have four possible combinations of values taken from them, namely, (1,'a'), (2, &apos...