Print first n different permutations of a string using itertools in Python



Examples :

  Input:  string = "abcab", n = 10  Output:  aabbc aabcb aacbb ababc abacb abbac abbca abcab abcba acabb  Input:  string = "okok", n = 4  Output:  kkoo koko kook okko 

Suitable:
Python provides a built-in method for finding permutations of any given sequence that is present in the itertools package. But this method does not provide unique permutations. Therefore, to ensure that any permutation does not repeat, we use a set and meet the following conditions:

  • If the permutation is not present in the set, print it and paste it into the set. Increase the number of unique permutations.
  • Otherwise, go to the next permutation.

Below is the implementation of the above approach:

# Python3 program to print the first and unique
# line permutations using itertools

from itertools import permutations

 
# Function to print the first and unique
# swap using itertools

def nPermute (string, n): 

 

# Convert string to list and sort

# alphabetical characters

strList = sorted ( list (string))

 

# Create an iterator

permList = permutations (strList)

 

  # Keep iterating while we

# reach the nth unique permutation

  i = 0

permSet = set ()

tempStr = `` 

 

while i & lt; n:

tempStr = `` .join (permList .__ next __ ())

 

# Insert line into set

# if not already enabled

# and print.

if tempStr not in permSet:

permSet.add (tempStr)

print (tempStr)

i + = 1

 
# Driver code

if __ name__ = = "__ main__" :

 

string = "ababc "

  n = 10

nPermute (string, n) 

Exit :

 aabbc aabcb aacbb ababc abacb abbac abbca abcab abcba acabb