Open In App

Python – Reverse Range in String List

Last Updated : 23 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Given a string list, reverse each element of string list from ith to jth index.

Input : test_list = [“Geeksforgeeks”, “Best”, “Geeks”], i, j = 1, 2 Output : [‘ee’, ‘es’, ‘ee’] Explanation : Range of strings are extracted. Input : test_list = [“Geeksforgeeks”], i, j = 1, 7 Output : [‘eeksfor’] Explanation : Single string, from e to r (7 elements) are sliced.

Method #1 : Using loop + reversed() + string slicing

The combination of above methods can be used to solve this problem. In this, we perform reverse of range using reversed() extracted using slicing.

Python3




# Python3 code to demonstrate working of
# Common list elements and dictionary values
# Using set() and intersection()
 
# initializing list
test_list = ["Geeksforgeeks", "Best", "Geeks"]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing range
i, j = 1, 3
 
res = []
for ele in test_list:
     
    # slicing and appending range
    res.append(ele[i : j + 1])
 
# printing result
print("Sliced strings : " + str(res))


Output

The original list : ['Geeksforgeeks', 'Best', 'Geeks']
Sliced strings : ['eek', 'est', 'eek']

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 #2 : Using map() + slicing + lambda

 This is yet another way in which this task can be performed. In this, we use map() to extend the logic of slice made using lambda to entire list.

Python3




# Python3 code to demonstrate working of
# Common list elements and dictionary values
# Using map() + slicing + lambda
 
# initializing list
test_list = ["Geeksforgeeks", "Best", "Geeks"]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing range
i, j = 1, 3
 
# map used to extend logic to each string
res = list(map(lambda x : x[i : j + 1], test_list))
 
# printing result
print("Sliced strings : " + str(res))


Output

The original list : ['Geeksforgeeks', 'Best', 'Geeks']
Sliced strings : ['eek', 'est', 'eek']

The Time and Space Complexity for all the methods are the same:

Time Complexity: O(n)

Space Complexity: O(n)

Method 3 :  using list comprehension,

Initialize the list of strings test_list.
Initialize the values of i and j to slice each string in the list.
Use a list comprehension to extract the slice from each string in test_list.
Store the extracted slices in a new list res.
Print the original list and the sliced strings.

Python3




# Python3 code to demonstrate working of
# Common list elements and dictionary values
# Using list comprehension and string slicing
 
# initializing list
test_list = ["Geeksforgeeks", "Best", "Geeks"]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing range
i, j = 1, 3
 
# using list comprehension to slice each string
res = [s[i:j+1] for s in test_list]
 
# printing result
print("Sliced strings : " + str(res))


Output

The original list : ['Geeksforgeeks', 'Best', 'Geeks']
Sliced strings : ['eek', 'est', 'eek']

The time complexity of this approach is O(n), where n is the length of the list test_list, because we are iterating through each string in the list once. 

The auxiliary space complexity is also O(n), because we are storing the extracted slices in a new list.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads