This question fragt, wie man das kartesische Produkt einer gegebenen Anzahl von Vektoren berechnet. Da die Anzahl der Vektoren im voraus bekannt und eher klein ist, wird die Lösung leicht mit verschachtelten for-Schleifen erhalten.Wie kann ich ein kartesisches Produkt iterativ berechnen?
Nehmen wir nun an, dass Sie gegeben sind, um einen Vektor von Vektoren in der Sprache Ihrer Wahl (oder eine Liste von Listen oder von Sätzen gesetzt usw.):
l = [ [1,2,3], [4,5], [6,7], [8,9,10], [11,12], [13] ]
Wenn ich gebeten wurde, seine zu berechnen Kartesisches Produkt, das ist
[ [1,4,6,8,11,13], [1,4,6,8,12,13], [1,4,6,9,11,13], [1,4,6,9,12,13], ... ]
Ich würde mit Rekursion fortfahren. Zum Beispiel in schnellen & schmutzig Python,
def cartesianProduct(aListOfLists):
if not aListOfLists:
yield []
else:
for item in aListOfLists[0]:
for product in cartesianProduct(aListOfLists[1:]):
yield [item] + product
Gibt es eine einfache Möglichkeit, es zu berechnen iterativ?
(Anmerkung: Die Antwort muss nicht in Python sein, und trotzdem bewusst, dass ich bin, dass in Python itertools macht den Job besser, als in this question.)
Ja. Eher einfach. Vielen Dank. –
Ich denke, Ihr Code ist tatsächlich etwas ineffizienter als Ihr Algorithmus ..; P – Larry
Ja ... Ich habe eine andere Version, die eng mit dem Algorithmus übereinstimmt, aber In Gedanken war es ziemlich verwirrend! Vielleicht kann ich es trotzdem posten ... –