Ich möchte etwas wie Code unten, aber "Python" Stil oder mit Standard-Bibliothek:
def combinations(a,b):
for i in a:
for j in b:
yield(i,j)
Ich möchte etwas wie Code unten, aber "Python" Stil oder mit Standard-Bibliothek:
def combinations(a,b):
for i in a:
for j in b:
yield(i,j)
Dabei handelt es sich nicht wirklich um "Kombinationen" im Sinne der Kombinatorik, sondern um Elemente aus dem kartesischen Produkt von a
y b
. Die Funktion in der Standardbibliothek zur Erzeugung dieser Paare lautet itertools.product()
:
for i, j in itertools.product(a, b):
# whatever
Wie @Sven sagte, versucht Ihr Code, alle geordneten Paare von Elementen der Listen zu erhalten a
y b
. In diesem Fall itertools.product(a,b)
ist das, was Sie wollen. Wenn Sie stattdessen "Kombinationen" wollen, die alle ungeordneten Paare verschiedener Elemente der Liste sind a
dann wollen Sie itertools.combinations(a,2)
.
>>> for pair in itertools.combinations([1,2,3,4],2):
... print pair
...
(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.