Как я могу вычислить декартово произведение итеративно?

Этот вопрос спрашивает, как вычислить декартово произведение заданного числа векторов. Поскольку число векторов известно заранее и довольно мало, решение легко получить с помощью вложенных циклов.

Теперь предположим, что на выбранном вами языке задан вектор векторов (или список списков, или набор множеств и т. Д.):

l = [ [1,2,3], [4,5], [6,7], [8,9,10], [11,12], [13] ]

Если бы меня попросили вычислить его декартово произведение, то есть

[ [1,4,6,8,11,13], [1,4,6,8,12,13], [1,4,6,9,11,13], [1,4,6,9,12,13], ... ]

Я бы приступил к рекурсии. Например, в быстром и грязном питоне,

def cartesianProduct(aListOfLists):
    if not aListOfLists:
        yield []
    else:
        for item in aListOfLists[0]:
            for product in cartesianProduct(aListOfLists[1:]):
                yield [item] + product

Есть ли простой способ вычислить этоитеративно?

(Примечание: ответ не обязательно должен быть в python, и в любом случае я знаю, что в python itertools делает работу лучше, как вэтот вопрос.)

Ответы на вопрос(4)

Ваш ответ на вопрос