In September 2007, Brian Adkins posted a simple Logo program to print all possible combinations of lists of items, and asked for alternatives in other languages. He provided a Ruby alternative which would translate fairly easily into Python. For my own Python implementation I decided to try a completely different approach:
prod1 = lambda elem, vec : map(lambda x : elem+' '+x, vec) xprod = lambda vec1, vec2 : reduce(list.__add__, map(lambda elem : prod1(elem ,vec2), vec1)) choices = lambda x : 'n'.join(reduce(xprod, x))+'n' q = [['small', 'medium', 'large'], ['vanilla', 'ultra chocolate', 'lychee', 'rum raisin', 'ginger'], ['cone', 'cup']] print choices(q),