Es ist eine Weile her und ich habe Probleme, meinen Kopf um einen Algorithmus zu wickeln, den ich zu machen versuche. Grundsätzlich habe ich zwei Listen und möchte alle Kombinationen der beiden Listen erhalten.
Ich erkläre es möglicherweise nicht richtig, daher hier ein Beispiel.
name = 'a', 'b'
number = 1, 2
Die Ausgabe in diesem Fall wäre:
1. A1 B2
2. B1 A2
Der schwierige Teil ist, dass ich möglicherweise mehr Elemente in der Variablen "name" als Elemente in der Variablen "number" habe (number ist immer gleich oder kleiner als die Variable name).
Ich bin verwirrt darüber, wie alle Kombinationen ausgeführt werden sollen (verschachtelt für Schleife?) Und noch verwirrter über die Logik, die Elemente in der Namensvariablen zu verschieben, falls mehr Elemente im Namen enthalten sind als in der Nummernliste.
Ich bin nicht der beste Programmierer, aber ich denke, ich kann es versuchen, wenn mir jemand helfen kann, die Logik / den Algorithmus zu klären, um dies zu erreichen. Also bin ich gerade auf verschachtelten Schleifen festgefahren.
Aktualisieren:
Hier ist die Ausgabe mit 3 Variablen und 2 Zahlen:
name = 'a', 'b', 'c'
number = 1, 2
Ausgabe:
1. A1 B2
2. B1 A2
3. A1 C2
4. C1 A2
5. B1 C2
6. C1 B2
quelle
Antworten:
Hinweis : Diese Antwort bezieht sich auf die oben gestellte Frage. Wenn Sie von Google hier sind und nur nach einer Möglichkeit suchen, ein kartesisches Produkt in Python zu erhalten,
itertools.product
oder wenn Sie nach einem einfachen Listenverständnis suchen, lesen Sie die anderen Antworten.Angenommen, wir nehmen an
len(list1) >= len(list2)
. Dann scheinen Sie zu wollen, alle Permutationen der Längelen(list2)
von zu nehmenlist1
und sie mit Elementen aus Liste2 abzugleichen. In Python:Kehrt zurück
quelle
zip
und ähnlich ist.Der einfachste Weg ist zu verwenden
itertools.product
:quelle
Kann einfacher sein als die einfachste oben:
ohne Import
quelle
Ich suchte nach einer Liste, die mit nur eindeutigen Kombinationen multipliziert wurde und als diese Funktion bereitgestellt wird.
Hier als Auszug aus den Python-Dokumenten zu
itertools
Das könnte Ihnen helfen, das zu finden, wonach Sie suchen.quelle
Vielleicht möchten Sie ein einzeiliges Listenverständnis ausprobieren:
quelle
Der beste Weg, um alle Kombinationen für eine große Anzahl von Listen herauszufinden, ist:
Das Ergebnis wird sein:
quelle
Oder die KISS-Antwort für kurze Listen:
Nicht so performant wie itertools, aber Sie verwenden Python, sodass Leistung bereits nicht Ihr Hauptanliegen ist ...
Ich mag auch alle anderen Antworten!
quelle
Eine winzige Verbesserung für die Antwort von Interjay, um das Ergebnis als Abflachungsliste zu erstellen.
Referenz von diesem Link
quelle
Ohne itertools
quelle
Beantworten Sie die Frage "Bei zwei Listen finden Sie alle möglichen Permutationen von Paaren eines Elements aus jeder Liste" und verwenden Sie die grundlegende Python-Funktionalität (dh ohne itertools), um die Replikation für andere Programmiersprachen zu vereinfachen:
Kehrt zurück
quelle
Die besseren Antworten darauf funktionieren nur für bestimmte Längen von Listen, die bereitgestellt werden.
Hier ist eine Version, die für jede Länge von Eingaben funktioniert. Es macht den Algorithmus auch in Bezug auf die mathematischen Konzepte der Kombination und Permutation klar.
Dies gibt aus:
quelle