使用 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 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告