Open In App
Related Articles

Python – Append according to Kth character

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

Given a String list, append to String i or j value depending on Kth index value.

Input : test_list = [“geeksforgeeks”, “best”, “for”, “geeks”], K = 2, N = ‘e’, i, j = “@@”, “..” 

Output : [‘geeksforgeeks..’, ‘best@@’, ‘for@@’, ‘geeks..’] 

Explanation : geeksforgeeks and geeks having similar 2nd occ. value as ‘e’, hence gets appended by “..”. 

Input : test_list = [“giiksforgeeks”, “bst”, “for”, “geeks”], K = 2, N = ‘e’, i, j = “@@”, “..” 

Output : [‘giiksforgeeks@@’, ‘best@@’, ‘for@@’, ‘geeks@@’] 

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 = ["geeksforgeeks", "best", "for", "geeks"]
 
# 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))

                    

Output
The original list : ['geeksforgeeks', 'best', 'for', 'geeks']
The resultant List : ['geeksforgeeks**', 'best##', 'for##', 'geeks**']

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 = ["geeksforgeeks", "best", "for", "geeks"]
 
# 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))

                    

Output
The original list : ['geeksforgeeks', 'best', 'for', 'geeks']
The resultant List : ['geeksforgeeks**', 'best##', 'for##', 'geeks**']

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 = ["geeksforgeeks", "best", "for", "geeks"]
 
# 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))

                    

Output
The original list : ['geeksforgeeks', 'best', 'for', 'geeks']
The resultant List : ['geeksforgeeks**', 'best##', 'for##', 'geeks**']

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



Last Updated : 28 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads