Sometimes, while working with Matrix we can have a problem in which we have Strings and we need a universal concatenation of all the String present in it. Let’s discuss certain ways in which this task can be performed.
Method #1 : Using list comprehension + join() We can solve this problem using list comprehension as a potential shorthand to the conventional loops that we may use to perform this particular task. We just join the elements extracted and put them into a as a single string.
Python3
# Python3 code to demonstrate # String Matrix Concatenation # Using list comprehension # initializing list test_list = [[ "neveropen" , " is" , " best" ], [ " I" , " Love" ], [ " Gfg" ]] # printing original list print ( "The original list : " + str (test_list)) # using list comprehension # count of all the elements in list res = "".join([ele for sub in test_list for ele in sub]) # print result print ( "The Matrix Concatenation is : " + str (res)) |
The original list : [['neveropen', ' is', ' best'], [' I', ' Love'], [' Gfg']] The Matrix Concatenation is : neveropen is best I Love Gfg
Time complexity: O(m*n), because it performs the same number of iterations as the original code.
Auxiliary space: O(m*n) as well, because it creates a list of m * n elements
Method #2: Using chain() + join() This particular problem can also be solved using the chain function instead of list comprehension in which we use the conventional join function to join.
Python3
# Python3 code to demonstrate # String Matrix Concatenation # Using chain() + join() from itertools import chain # initializing list test_list = [[ "neveropen" , " is" , " best" ], [ " I" , " Love" ], [ " Gfg" ]] # printing original list print ( "The original list : " + str (test_list)) # using chain() + join() # String Matrix Concatenation res = "".join( list (chain( * test_list))) # print result print ( "The Matrix Concatenation is : " + str (res)) |
The original list : [['neveropen', ' is', ' best'], [' I', ' Love'], [' Gfg']] The Matrix Concatenation is : neveropen is best I Love Gfg
Time complexity: O(m*n), because it performs the same number of iterations as the original code.
Auxiliary space: O(m*n) as well, because it creates a list of m * n elements
Method #3 : Using extend() and join() methods
Python3
# Python3 code to demonstrate # String Matrix Concatenation # initializing list test_list = [[ "neveropen" , " is" , " best" ], [ " I" , " Love" ], [ " Gfg" ]] # printing original list print ( "The original list : " + str (test_list)) res = [] for i in test_list: res.extend(i) res = " " .join(res) # print result print ( "The Matrix Concatenation is : " + str (res)) |
The original list : [['neveropen', ' is', ' best'], [' I', ' Love'], [' Gfg']] The Matrix Concatenation is : neveropen is best I Love Gfg
Time Complexity: O(n*n), where n is the number of elements in the list “test_list”.
Auxiliary Space: O(n), where n is the number of elements in the list “test_list”.
Method #4 : Using reduce()
Here, reduce() function applies the lambda function to the items of the list in a cumulative way, such that the first item is passed as the first argument, the second item as the second argument and so on. In this case, the lambda function takes two arguments x and y and concatenates them.
Python3
from functools import reduce # initializing list test_list = [[ "neveropen" , " is" , " best" ], [ " I" , " Love" ], [ " Gfg" ]] # printing original list print ( "The original list : " + str (test_list)) # using reduce() result = reduce ( lambda x, y: x + y, reduce ( lambda x, y: x + y, test_list)) # print result print ( "The Matrix Concatenation is : " + str (result)) #This code is contributed by Edula Vinay Kumar Reddy |
The original list : [['neveropen', ' is', ' best'], [' I', ' Love'], [' Gfg']] The Matrix Concatenation is : neveropen is best I Love Gfg
Time complexity: O(n)
Auxiliary Space: O(1)