使用 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

更新於:2020年2月4日

297 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告