1

I'm using python (2.7.2) and I need all permutations without repetition from a list. More precisely,

 for i in itertools.permutations([1,2,3]): print i

correctly gives

(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)

But now I am looking for something would do the following

for i in myfunction([1,2,2]): print i
(1,2,2)
(2,2,1)
(2,1,2)

Whereas itertools would give that list twice (or, for ([1,1,1]) as the input, it is just repeated six times). This is basically something between itertools.permutations and itertools.combinations. I tried working with sets, but all solutions that I tried always created new problems and never matched the desired output.

Eulenfuchswiesel
  • 879
  • 9
  • 20

1 Answers1

3

It looks like you want the set.

s = []
for i in itertools.permutations([1,2,2]):
    s.append(i)
print(set(s))

Which gives:

{(1, 2, 2), (2, 2, 1), (2, 1, 2)}

Alternatively, without saving the objects to a variable:

for i in set(itertools.permutations([1,2,2])):
    print(i)
Andy
  • 134
  • 8