Open In App

Python – Reverse Range in String List

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 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 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 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.


Article Tags :