Ich suche im Grunde nach einer Python-Version von Combination ofList<List<int>>
Bei einer Liste von Listen benötige ich eine neue Liste, die alle möglichen Kombinationen von Elementen zwischen den Listen enthält.
[[1,2,3],[4,5,6],[7,8,9,10]] -> [[1,4,7],[1,4,8],...,[3,6,10]]
Die Anzahl der Listen ist unbekannt, daher brauche ich etwas, das in allen Fällen funktioniert. Bonuspunkte für Eleganz!
python
combinations
Lin
quelle
quelle
*a
?*a
bedeutet, dass dies Argumente sind, die an die Funktion oder Methode übergeben werden.def fn(a,b,c):
würde auffn(*[1,2,3])
Referenza
als Eingabe verwendet wirditertools.product(*a)
undyield
sowohl das von erzeugte Tupelitertools
als auch eine umgekehrte Version durchläuft. zB eine Liste erstellen,reverse()
und wieder in Tupel konvertieren). Am besten eine neue Frage stellen.Die eleganteste Lösung ist die Verwendung von itertools.product in Python 2.6.
Wenn Sie Python 2.6 nicht verwenden, zeigen die Dokumente für itertools.product tatsächlich eine äquivalente Funktion, um das Produkt "manuell" auszuführen:
quelle
Ich hoffe, Sie finden das genauso elegant wie bei meiner ersten Begegnung.
quelle
Numpy kann es schaffen:
quelle
An der direkten Rekursion für diese Aufgabe ist nichts auszusetzen. Wenn Sie eine Version benötigen, die mit Zeichenfolgen funktioniert, entspricht dies möglicherweise Ihren Anforderungen:
quelle
Hierfür kann man Base Python verwenden. Der Code benötigt eine Funktion zum Reduzieren von Listen von Listen:
Dann kann man laufen:
Ausgabe:
quelle
Ausgabe:
quelle