使用Python中的itertools打印字符串的前n个不同的排列

许多对象的排列表示更新如何以不同的顺序出现。但是有时候我们可能在一系列相同的给定对象中有两个对象。在这种情况下,两个序列将相等。在本文中,将看到如何仅表示给定对象列表中的唯一序列。

itertools模块具有一种称为置换的方法,可以帮助我们实现这一目标。为了获得唯一的排列,我们利用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

以上是 使用Python中的itertools打印字符串的前n个不同的排列 的全部内容, 来源链接: utcz.com/z/357153.html

回到顶部