2016-12-21 6 views
1

das ist wahrscheinlich ein einfaches problem, aber mein code ist nur die äußere for loop am ende, und einmal am anfang. Es sollte über jede Kombination für jede Kombination von Zahlen Schleifefor loop nicht richtig looping

from itertools import permutations as p                            
combos = p(['/','*','-','+'], 3)                       
numbers = p(['9','7','7','6'])                              
for y in numbers:                                  
    print(y)                                   
    for x in combos:                           
     print(x)                                  

Was mache ich falsch? Es gibt aus:

('9', '7', '7', '6') 
('/', '*', '-') 
('/', '*', '+') 
('/', '-', '*') 
('/', '-', '+') 
('/', '+', '*') 
('/', '+', '-') 
('*', '/', '-') 
('*', '/', '+') 
('*', '-', '/') 
('*', '-', '+') 
('*', '+', '/') 
('*', '+', '-') 
('-', '/', '*') 
('-', '/', '+') 
('-', '*', '/') 
('-', '*', '+') 
('-', '+', '/') 
('-', '+', '*') 
('+', '/', '*') 
('+', '/', '-') 
('+', '*', '/') 
('+', '*', '-') 
('+', '-', '/') 
('+', '-', '*') 
('9', '7', '6', '7') 
('9', '7', '7', '6') 
('9', '7', '6', '7') 
('9', '6', '7', '7') 
('9', '6', '7', '7') 
('7', '9', '7', '6') 
('7', '9', '6', '7') 
('7', '7', '9', '6') 
('7', '7', '6', '9') 
('7', '6', '9', '7') 
('7', '6', '7', '9') 
('7', '9', '7', '6') 
('7', '9', '6', '7') 
('7', '7', '9', '6') 
('7', '7', '6', '9') 
('7', '6', '9', '7') 
('7', '6', '7', '9') 
('6', '9', '7', '7') 
('6', '9', '7', '7') 
('6', '7', '9', '7') 
('6', '7', '7', '9') 
('6', '7', '9', '7') 
('6', '7', '7', '9') 
+0

Was möchten Sie ausgeben? – Max

+1

In Python 3 liefern viele Dinge, die früher Listen zurückgegeben haben (einschließlich 'itertools.permutations'), Generatoren zurück. –

+0

Können Sie ein Beispiel für die erwartete Ausgabe veröffentlichen? – yorodm

Antwort

6

itertools.permutations produziert einen Iterator. Das bedeutet, dass es konsumiert werden kann. Einmal verbraucht, wird eine nachfolgende Schleife es einfach überspringen. Wenn Sie es in eine Liste konvertieren, haben Sie weiterhin Zugriff auf seine Mitglieder.

from itertools import permutations as p 
combos = list(p(['/','*','-','+'], 3)) 
numbers = list(p(['9','7','7','6'])) 
for y in numbers: 
    print(y) 
    for x in combos: 
     print(x) 
+0

wie kann ich umgehen – PAS

+0

@PAS Set 'combos = p (...)' innerhalb der inneren Schleife. – quapka

+0

@quapka Warum sollten wir die Permutationen bei jeder äußeren Iteration neu berechnen? – kojiro