Я использую python (2.7.2), и мне нужны все перестановки без повторения из списка. Точнее,Python itertools перестановки с двойными элементами
for i in itertools.permutations([1,2,3]): print i
правильно дает
(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)
Но теперь я ищу что-то будет делать следующее
for i in myfunction([1,2,2]): print i
(1,2,2)
(2,2,1)
(2,1,2)
В то время как itertools дал бы этот список дважды (или, ([ 1,1,1]) в качестве входного сигнала, он просто повторяется шесть раз). Это в основном что-то между itertools.permutations и itertools.combinations. Я пробовал работать с наборами, но все решения, которые я пытался, всегда создавали новые проблемы и никогда не соответствовали желаемому результату.
Не можете вы просто фильтровать результат через 'set'? 'for i in set (itertools.permutations ([1,2,2]): print i' –
Работы. Спасибо, как-то не удалось добраться туда в начале и закончил путь к сложным решениям. – Eulenfuchswiesel
Существует эффективный способ сделать это в [этот старый мой ответ] (http://stackoverflow.com/a/31678111/4014959) –