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