Python – Character repetition string combinations
Given a string list and list of numbers, the task is to write a Python program to generate all possible strings by repeating each character of each string by each number in the list.
Input : test_list = [“gfg”, “is”, “best”], rep_list = [3, 5, 2]
Output : [‘gggfffggg’, ‘iiisss’, ‘bbbeeesssttt’, ‘gggggfffffggggg’, ‘iiiiisssss’, ‘bbbbbeeeeesssssttttt’, ‘ggffgg’, ‘iiss’, ‘bbeesstt’]
Explanation : Each element of ‘gfg’ is repeated 3, 5 and 2 times to output different strings.Input : test_list = [“gfg”, “is”, “best”], rep_list = [3, 1, 2]
Output : [‘gggfffggg’, ‘iiisss’, ‘bbbeeesssttt’, ‘gfg’, ‘is’, ‘best’, ‘ggffgg’, ‘iiss’, ‘bbeesstt’]
Explanation : Each element of ‘gfg’ is repeated 3, 1 and 2 times to output different strings.
Method #1 : Using join() + loop + list comprehension + * operator
In this, the task of constructing each string is done using join(). The * operator performs the task of creating multiple character occurrences. The nested loop is used to combine each number with each string.
Python3
# Python3 code to demonstrate working of # Character repetition string combinations # Using join() + nested loop + list comprehension + * operator # initializing list test_list = [ "gfg" , "is" , "best" ] # printing original list print ( "The original list is : " + str (test_list)) # repeat list rep_list = [ 3 , 5 , 2 ] # * operator performs repetitions # list comprehension encapsulates logic res = [''.join(sub * ele1 for sub in ele2) for ele1 in rep_list for ele2 in test_list] # printing result print ( "All repetition combinations strings : " + str (res)) |
The original list is : ['gfg', 'is', 'best'] All repetition combinations strings : ['gggfffggg', 'iiisss', 'bbbeeesssttt', 'gggggfffffggggg', 'iiiiisssss', 'bbbbbeeeeesssssttttt', 'ggffgg', 'iiss', 'bbeesstt']
Time complexity: O(n^2), where n is the length of the input list.
Auxiliary space: O(nm), where n is the length of the input list and m is the maximum value in the repetition list.
The nested loop for generating pairs is avoiding in this method by the use of the product() method. Rest all the functionality remains same as the above method.
Python3
# Python3 code to demonstrate working of # Character repetition string combinations # Using product() + join() + loop from itertools import product # initializing list test_list = [ "gfg" , "is" , "best" ] # printing original list print ( "The original list is : " + str (test_list)) # repeat list rep_list = [ 3 , 5 , 2 ] # * operator performs repetitions # list comprehension encapsulates logic res = [''.join(sub * ele1 for sub in ele2) for ele2, ele1 in product(test_list, rep_list)] # printing result print ( "All repetition combinations strings : " + str (res)) |
The original list is : ['gfg', 'is', 'best'] All repetition combinations strings : ['gggfffggg', 'gggggfffffggggg', 'ggffgg', 'iiisss', 'iiiiisssss', 'iiss', 'bbbeeesssttt', 'bbbbbeeeeesssssttttt', 'bbeesstt']
Time Complexity: O(n2)
Auxiliary Space: O(n)