2017-12-30 6 views
-1

Der Befehl Permutation von itertoolsPermutation einer Liste ohne Wiederholungen

permutations([0,1,1]) 

kehrt

(0, 1, 1), (0, 1, 1), (1, 0, 1), (1, 1, 0), (1, 0, 1), (1, 1, 0) 

gibt es eine Möglichkeit

(0,1,1), (1,0,1), (1,1,0) 

zurückzukehren, die für eine beliebige Liste von ist, Ganzzahlen erhalten alle Permutationen, aber ohne wiederholte Elemente, wenn sich Elemente in der ursprünglichen Liste wiederholen?

+0

die Elemente sind immer hashable? –

+0

Willem bedeutet 'set (Permutationen ([0,1,1]))' –

Antwort

0

Sie können den zurückgegebenen Wert auf einen Satz gegossen:

print(list(set(permutations([0,1,1])))) 

Ausgang:

[(0, 1, 1), (1, 1, 0), (1, 0, 1)] 
+2

Dies ist sicherlich ein _naive_ Weg, es zu tun. –

+2

Das Problem ist, dass die Anzahl der unterscheidbaren Permutationen * viel * kleiner sein kann als die Gesamtzahl der Permutationen, was im Allgemeinen extrem ineffizient ist. Es hängt natürlich von der Problemgröße ab. Für einige Anwendungsfälle wäre es sinnlos, etwas mehr zu tun, daher verdient es wahrscheinlich +1 –

Verwandte Themen