Open In App

Python | Append suffix/prefix to strings in list

Sometimes, while working with Python, we can a problem in which we need to pad strings in lists at trailing or leading position. This kind of problem is quite common and can occur in day-day programming or web development. Let’s discuss a way in which this task can be performed. 

Method #1: Using + operator + list comprehension In this task, we just append the string at rear or front position using + operator and list comprehension is used to iterate through all the elements. 






# Python3 code to demonstrate working of
# Append suffix / prefix to strings in list
# Using list comprehension + "+" operator
 
# initializing list
test_list = ['a', 'b', 'c', 'd']
 
# printing list
print("The original list : " + str(test_list))
 
# initializing append_str
append_str = 'gfg'
 
# Append suffix / prefix to strings in list
pre_res = [append_str + sub for sub in test_list]
suf_res = [sub + append_str for sub in test_list]
 
# Printing result
print("list after prefix addition : " + str(pre_res))
print("list after suffix addition : " + str(suf_res))

Output : 
 
The original list : ['a', 'b', 'c', 'd']
list after prefix addition : ['gfga', 'gfgb', 'gfgc', 'gfgd']
list after suffix addition : ['agfg', 'bgfg', 'cgfg', 'dgfg']

Time Complexity: O(n)
Auxiliary Space: O(n)



Method #2: Using itertools.starmap(): The python library itertools provides a function called “starmap()” which can be used to apply the same function to multiple inputs from an iterable, in this case, it can be used to append the suffix/prefix to each string in the list, this approach would have a time complexity of O(n) and auxiliary space of O(n) as well.




#Using itertools.starmap()
import itertools
 
#initializing list
test_list = ['a', 'b', 'c', 'd']
 
#printing original list
print("The original list :", test_list)
 
#initializing append_str
append_str = 'gfg'
 
#Append suffix / prefix to strings in list
pre_res = list(itertools.starmap(lambda s: append_str + s, test_list))
suf_res = list(itertools.starmap(lambda s: s + append_str, test_list))
 
#Printing result
print("list after prefix addition :", pre_res)
print("list after suffix addition :", suf_res)

Output
The original list : ['a', 'b', 'c', 'd']
list after prefix addition : ['gfga', 'gfgb', 'gfgc', 'gfgd']
list after suffix addition : ['agfg', 'bgfg', 'cgfg', 'dgfg']

Method #3: Using map and lambda functions




def add_prefix_suffix(lst, prefix, suffix):
 
    pre_res = list(map(lambda x: prefix + x, lst))
 
    suf_res = list(map(lambda x: x + suffix, lst))
 
    return pre_res, suf_res
 
test_list = ['a', 'b', 'c', 'd']
 
print("The original list :", test_list)
 
pre_res, suf_res = add_prefix_suffix(test_list, 'gfg', 'gfg')
 
print("list after prefix addition :", pre_res)
 
print("list after suffix addition :", suf_res)
#This code is contributed by Vinay Pinjala.

Output
The original list : ['a', 'b', 'c', 'd']
list after prefix addition : ['gfga', 'gfgb', 'gfgc', 'gfgd']
list after suffix addition : ['agfg', 'bgfg', 'cgfg', 'dgfg']

Time Complexity: O(n)
Auxiliary Space: O(n)

Method #4: Using For loop.




test_list = ['a', 'b', 'c', 'd']
prefix,suffix='gfg', 'gfg'
print("The original list :", test_list)
pre_res = []
suf_res = []
for item in test_list:
  pre_res.append(prefix + item)
  suf_res.append(item + suffix)
 
print("list after prefix addition :", pre_res)
 
print("list after suffix addition :", suf_res)
#This code is contributed by tvsk.

Output
The original list : ['a', 'b', 'c', 'd']
list after prefix addition : ['gfga', 'gfgb', 'gfgc', 'gfgd']
list after suffix addition : ['agfg', 'bgfg', 'cgfg', 'dgfg']

Time Complexity: O(n)
Auxiliary Space: O(n)

Method #5: Using numpy module:

Step-by-step approach:




import numpy as np
# initializing list
test_list = ['a', 'b', 'c', 'd']
prefix,suffix='gfg', 'gfg'
pre_res = np.char.add(prefix, test_list)
suf_res = np.char.add(test_list, suffix)
# printing list
print("The original list :", test_list)
# Printing result
print("list after prefix addition :", pre_res)
print("list after suffix addition :", suf_res)
#This code is contributed by Jyothi Pinjala.

Output:

The original list : ['a', 'b', 'c', 'd']
list after prefix addition : ['gfga' 'gfgb' 'gfgc' 'gfgd']
list after suffix addition : ['agfg' 'bgfg' 'cgfg' 'dgfg']

Time complexity: O(n), where n is the number of elements in the input list. This is because we iterate through each element once to perform the prefix and suffix addition.
Auxiliary Space: O(n), where n is the number of elements in the input list. This is because we create two lists of size n to store the results of the prefix and suffix addition

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

Step-by-step approach:




from functools import reduce
 
test_list = ['a', 'b', 'c', 'd']
prefix, suffix = 'gfg', 'gfg'
pre_res = reduce(lambda res, item: res + [prefix + item], test_list, [])
suf_res = reduce(lambda res, item: res + [item + suffix], test_list, [])
print("The original list :", test_list)
print("List after prefix addition :", pre_res)
print("List after suffix addition :", suf_res)

Output
The original list : ['a', 'b', 'c', 'd']
List after prefix addition : ['gfga', 'gfgb', 'gfgc', 'gfgd']
List after suffix addition : ['agfg', 'bgfg', 'cgfg', 'dgfg']

Time complexity: O(n), where n is the length of test_list. 
Auxiliary space: O(n), where n is the length of test_list.


Article Tags :