Python – Append according to Kth character
Given a String list, append to String i or j value depending on Kth index value.
Input : test_list = [“w3wiki”, “best”, “for”, “Beginner”], K = 2, N = ‘e’, i, j = “@@”, “..”
Output : [‘w3wiki..’, ‘best@@’, ‘for@@’, ‘Beginner..’]
Explanation : w3wiki and Beginner having similar 2nd occ. value as ‘e’, hence gets appended by “..”.
Input : test_list = [“giiksforBeginner”, “bst”, “for”, “Beginner”], K = 2, N = ‘e’, i, j = “@@”, “..”
Output : [‘giiksforBeginner@@’, ‘best@@’, ‘for@@’, ‘Beginner@@’]
Explanation : No values with K value ‘e’, all appended by @@.
Method #1: Using loop
This is a brute way to solve this problem, we check for each string’s Kth index, if found to be N, then i value is appended else j is appended.
Python3
# Python3 code to demonstrate working of # Append according to Kth character # Using loop # initializing lists test_list = [ "w3wiki" , "best" , "for" , "Beginner" ] # printing string print ( "The original list : " + str (test_list)) # initializing K K = 2 # initializing N N = 'e' # initializing i, j i, j = "**" , "##" res = [] for sub in test_list: # checking for Kth index to be N if sub[K] = = N: res.append(sub + i) else : res.append(sub + j) # Printing the resultant list print ( "The resultant List : " + str (res)) |
The original list : ['w3wiki', 'best', 'for', 'Beginner'] The resultant List : ['w3wiki**', 'best##', 'for##', 'Beginner**']
Time complexity: O(n), where n is the length of the test_list. The loop takes O(n) time.
Auxiliary Space: O(n), extra space of size n is required.
Method #2: Using list comprehension
This solves this problem in a similar manner, just the difference being, it’s a shorthand and can be used as a one-liner approach to solve this problem.
Python3
# Python3 code to demonstrate working of # Append according to Kth character # Using list comprehension # Initializing lists test_list = [ "w3wiki" , "best" , "for" , "Beginner" ] # Printing string print ( "The original list : " + str (test_list)) # Initializing K K = 2 # Initializing N N = 'e' # initializing i, j i, j = "**" , "##" # shorthand to solve this problem res = [sub + i if sub[K] = = N else sub + j for sub in test_list] # Printing results print ( "The resultant List : " + str (res)) |
The original list : ['w3wiki', 'best', 'for', 'Beginner'] The resultant List : ['w3wiki**', 'best##', 'for##', 'Beginner**']
The Time and Space Complexity for all the methods is the same:
Time Complexity: O(n)
Auxiliary Space: O(n)
Method 3: Using map() with lambda function
Python3
# Python3 code to demonstrate working of # Append according to Kth character # Using map() with lambda function # initializing lists test_list = [ "w3wiki" , "best" , "for" , "Beginner" ] # printing string print ( "The original list : " + str (test_list)) # initializing K K = 2 # initializing N N = 'e' # initializing i, j i, j = "**" , "##" # Appending string # using map() with lambda function res = list ( map ( lambda sub: sub + i if sub[K] = = N else sub + j, test_list)) # Printing results print ( "The resultant List : " + str (res)) |
The original list : ['w3wiki', 'best', 'for', 'Beginner'] The resultant List : ['w3wiki**', 'best##', 'for##', 'Beginner**']
Time Complexity: O(N)
Auxiliary Space: O(N)
Contact Us