How to permutate a string in Python 3
To permutate a string is to change the order or arrangement of the characters that the string is made up of. Given that n is the number of characters, there are n! different ways to permutate a given string.
This post shows how we can permutate a string in Python 3.
Without importing any Python 3 libraries
Printing different permutation of string with duplicates
def permutate_string(string, prefix = ''): if len(string) == 0: print(prefix) else: for i in range(len(string)): rem = string[0:i] + string[i+1:] permutate_string(rem, prefix + string[i]) permutate_string('abb') ''' Output: abb abb bab bba bab bba '''
Collecting different permutation of string with duplicates in a list
def build_permutation_list(string, prefix='', permutation_list=[]): if len(string) == 0: permutation_list.append(prefix) else: for i in range(len(string)): rem = string[0:i] + string[i + 1:] build_permutation_list(rem, prefix + string[i], permutation_list) permutation_list = [] build_permutation_list('abb', permutation_list=permutation_list) # permutation_list will contain the list of string variations from this point on
Collecting different permutation of string without duplicates in a list
permutation_list = [] build_permutation_list('abb', permutation_list=permutation_list) permutation_list = set(permutation_list)
With itertools.permutations library function
Printing different permutation of string with duplicates
from itertools import permutations string_permutations = permutations('abb') for string in string_permutations: print(''.join(string)) ''' Output: abb abb bab bba bab bba '''
Printing different permutation of string without duplicates
from itertools import permutations # Use the set function to remove duplicates string_permutations = set(permutations('abb')) for string in string_permutations: print(''.join(string)) ''' Output: bba bab abb '''