我正在使用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'過濾結果? '爲我在集(itertools.permutations([1,2,2])):打印我' –
工程。謝謝,不知何故,一開始就沒有達到目標,最終導致了複雜的解決方案。 – Eulenfuchswiesel
有一種有效的方法可以在[我的這個舊的答案]中做到這一點(http://stackoverflow.com/a/31678111/4014959) –