說我有一個列表L=[1,2,3,3,4]
,我想要遞歸地查找所有長度爲3的排列。遞歸生成所有唯一置換的代碼?
我試圖返回所有獨特的排列,這意味着類似[1,2,3]
不包括在輸出中兩次,因爲L
中有兩個3
。
我問,因爲和itertools.permutations包括重複,還我試圖通過排列迭代爲了(從最低[1,2,3]
迭代高達[4,3,3]
),因爲我希望能夠退出迭代每當我需要。
如果我沒有正確解釋,我很抱歉。
編輯:我應該再說一遍。在實踐中,我不希望實際上生成每一個可能的排列(可能會有太多的),儘管代碼可能會跑到完成。我試圖按照特定的順序遍歷所有的排列,這樣我可以在必要的時候提早進行保釋。
你想避免重複'[1,2,3]',但是你也想在輸出中包含'[4,3,3]'?也許這是可能的,但對我來說似乎是不一致的... – senderle
@senderle那麼[1,2,3]可能與另一個[1,2,3]重複。 [4,3,3]本身仍然是一個有效的排列。 –
是的,但在一種情況下,您將「3」視爲相同,而在另一種情況下,您將它們視爲不同。做一個事後過濾器並不難,但我很難看到如何只產生你想要的值。你怎麼知道什麼時候把'3's視爲完全相同,何時將它們視爲不同的?再一次,也許這是可能的,但我不確定這個好處是否超過了複雜度的增加。 – senderle