Open In App

Python – Concatenate Ranged Values in String list

Given list of strings, perform concatenation of ranged values from the Strings list.

Input : test_list = [“abGFGcs”, “cdforef”, “asalloi”], i, j = 3, 5 
Output : FGorll 
Explanation : All string sliced, FG, or and ll from all three strings and concatenated. 



Input : test_list = [“aGFGcs”, “cforef”, “aalloi”], i, j = 1, 4 
Output : GFGforall 
Explanation : Similar slicing operation different ranges.

Method #1 : Using loop + string slicing



This is brute way in which this task can be performed. In this we iterate for all strings and perform concatenation of values of range of each string.




# Python3 code to demonstrate working of
# Concatenate Ranged Values in String list
# Using loop
 
# initializing list
test_list = ["abGFGcs", "cdforef", "asalloi"]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing range
i, j = 2, 5
 
res = ''
for ele in test_list:
     
    # Concatenating required range
    res += ele[i : j]
         
# printing result
print("The Concatenated String : " + str(res))

Output
The original list : ['abGFGcs', 'cdforef', 'asalloi']
The Concatenated String : GFGforall

Time complexity: O(n * (j-i)), where n is the length of the input list and (j-i) is the length of the concatenated substring.
Auxiliary Space: O(j-i), as we are creating a new string of length (j-i) to store the concatenated substring. The space required for the input list and loop variables is not considered as auxiliary space as they are part of the program logic.

Method #2  : Using list comprehension + string slicing

This is yet another way in which this task can be performed. In this, we extract a particular range of string in one liner using list comprehension and string slicing as above method. 




# Python3 code to demonstrate working of
# Concatenate Ranged Values in String list
# Using list comprehension + string slicing
 
# initializing list
test_list = ["abGFGcs", "cdforef", "asalloi"]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing range
i, j = 2, 5
 
# join() used to join slices together
res = ''.join([sub[i : j] for sub in test_list])
         
# printing result
print("The Concatenated String : " + str(res))

Output
The original list : ['abGFGcs', 'cdforef', 'asalloi']
The Concatenated String : GFGforall

Time complexity: O(n*m), where n is the length of the input list and m is the length of the substring (j-i).
Auxiliary space: O(m), where m is the length of the substring (j-i).

Method 3: using the map() function and the join() method. Here is an example code:




# Python3 code to demonstrate working of
# Concatenate Ranged Values in String list
# Using map() function + string slicing
 
# initializing list
test_list = ["abGFGcs", "cdforef", "asalloi"]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing range
i, j = 2, 5
 
# using map() to perform slicing
sliced_list = map(lambda x: x[i:j], test_list)
 
# join() used to join slices together
res = ''.join(sliced_list)
 
# printing result
print("The Concatenated String : " + str(res))

Output
The original list : ['abGFGcs', 'cdforef', 'asalloi']
The Concatenated String : GFGforall

Time complexity of the above code is O(nm), where n is the number of strings in the list and m is the length of the sliced string.
Auxiliary space complexity of the above code is O(nm), where n is the number of strings in the list and m is the length of the sliced string.

Method #4: Using the reduce() function from functools module.

Use reduce() to apply a lambda function that concatenates the required range of each string in the list. The lambda function takes two arguments x and y, which represent the accumulated result and the current element of the list being processed, respectively. The initial value of x is set to an empty string (”) and the required range is concatenated with x using the string slicing operation y[i:j]. The result of reduce() is the final concatenated string.




from functools import reduce
 
# initializing list
test_list = ["abGFGcs", "cdforef", "asalloi"]
 
# initializing range
i, j = 2, 5
 
# Using reduce() + string slicing + lambda
res = reduce(lambda x, y: x + y[i:j], test_list, '')
 
# printing original list
print("The original list : " + str(test_list))
 
# printing result
print("The Concatenated String : " + str(res))

Output
The original list : ['abGFGcs', 'cdforef', 'asalloi']
The Concatenated String : GFGforall

Time complexity: O(N*L), where N is the number of strings in the list and L is the length of the required range.
Auxiliary space: O(L), where L is the length of the required range.

Method #5: Using str.join() and list slicing




# Python3 code to demonstrate working of
# Concatenate Ranged Values in String list
# Using str.join() and list slicing
 
# initializing list
test_list = ["abGFGcs", "cdforef", "asalloi"]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing range
i, j = 2, 5
 
# Extracting required range using list slicing and joining using str.join()
res = ''.join([s[i:j] for s in test_list])
 
# printing result
print("The Concatenated String : " + str(res))

Output
The original list : ['abGFGcs', 'cdforef', 'asalloi']
The Concatenated String : GFGforall

Time complexity: O(n), where n is the length of the input list.
Auxiliary space: O(n), where n is the length of the input list, due to the list comprehension


Article Tags :