使用 Python 的 itertools 列印字串的前 n 個不同排列
排列是表示更新如何以不同順序呈現的方式。但有時,在一系列給定物件中,我們可能有兩個相同的物件。在這種情況下,兩個序列將變得相等。在本文中,我們將瞭解如何僅從給定的物件列表中表示唯一的序列。
itertools 模組有一個名為 permutations 的方法可以幫助我們實現這一點。為了獲得唯一的排列,我們藉助 set 方法,該方法只儲存不同的元素。但在那之前,我們使用 sorted 方法將元素按排序順序排列。
在下面的程式中,K 是我們想要從所有可能的唯一排列中顯示出的最大唯一元素數量。使用 while 迴圈,我們不斷將唯一元素新增到我們想要顯示的最終列表中,僅當它尚未新增到集合中時。
示例
from itertools import permutations def permutation_value(str, k): s = sorted(list(str)) p = permutations(s) m = 0 set_1 = set() str = '' while m < k: str = ''.join(p.__next__()) if str not in set_1: set_1.add(str) print(str) m += 1 str = "xyxxz" i = 12 permutation_value(str, i)
輸出
執行上述程式碼得到以下結果:
xxxyz xxxzy xxyxz xxyzx xxzxy xxzyx xyxxz xyxzx xyzxx xzxxy xzxyx xzyxx
廣告