2017-05-10 7 views
0

Ich versuche, alle möglichen Permutationen zu finden, sondern erhalten Duplikate, wenn ich die Methode itertools.permuatations verwende.Permutationen mit Python

import itertools 
def solution(A): 
    for each in itertools.permutations(list(A)): 
     print each 
     print '----' 

solution('1214') 

Ergebnis: -

('1', '2', '1', '4') 
---- 
('1', '2', '4', '1') 
---- 
('1', '1', '2', '4') 
---- 
('1', '1', '4', '2') 
---- 
('1', '4', '2', '1') 
---- 
('1', '4', '1', '2') 
---- 
('2', '1', '1', '4') 
---- 
('2', '1', '4', '1') 
---- 
('2', '1', '1', '4') 
---- 
('2', '1', '4', '1') 
---- 
('2', '4', '1', '1') 
---- 
('2', '4', '1', '1') 
---- 
('1', '1', '2', '4') 
---- 
('1', '1', '4', '2') 
---- 
('1', '2', '1', '4') 
---- 
('1', '2', '4', '1') 
---- 
('1', '4', '1', '2') 
---- 
('1', '4', '2', '1') 
---- 
('4', '1', '2', '1') 
---- 
('4', '1', '1', '2') 
---- 
('4', '2', '1', '1') 
---- 
('4', '2', '1', '1') 
---- 
('4', '1', '1', '2') 
---- 
('4', '1', '2', '1') 
---- 
+1

Aber Ihre Eingabe ist '('1214')'. Sollte das "(" 1234 ") sein? Wie sieht Ihre erwartete Ausgabe sonst aus? Immer noch 4 Ziffern, aber keine Duplikate? – roganjosh

+0

Da es zwei Einsen gibt, sollten Duplikate erwartet werden. –

+0

Dies ist ein chaotisches Problem und glücklicherweise ein Duplikat. –

Antwort

1

Sie Duplikate erhalten, weil der Eingang hat zwei 1 Zeichen darin. Sie können set() verwenden, um sie zu entfernen.

import itertools 
def solution(A): 
    for each in set(itertools.permutations(list(A))): 
     print each 
     print '----' 

solution('1214')