Python program to extract characters in given range from a string list
Given a Strings List, extract characters in index range spanning entire Strings list.
Input : test_list = ["geeksforgeeks", "is", "best", "for", "geeks"], strt, end = 14, 20 Output : sbest Explanation : Once concatenated, 14 - 20 range is extracted.
Input : test_list = ["geeksforgeeks", "is", "best", "for", "geeks"], strt, end = 11, 20 Output : sbesbest Explanation : Once concatenated, 11 – 20 range is extracted.
Method 1 : Using join() + list comprehension
In this, we perform concatenation of all the strings using join() and list comprehension, and post that, the required character range is extracted.
Python3
# initializing list test_list = [ "geeksforgeeks" , "is" , "best" , "for" , "geeks" ] # printing original list print ( "The original list is : " + str (test_list)) # initializing char range strt, end = 14 , 30 # strt and end used to get desired characters res = ''.join([sub for sub in test_list])[strt : end] # printing result print ( "Range characters : " + str (res)) |
The original list is : ['geeksforgeeks', 'is', 'best', 'for', 'geeks'] Range characters : sbestforgeeks
Time Complexity: O(n) where n is the number of elements in the list “test_list”.
Auxiliary Space: O(n) additional space of size n is created where n is the number of elements in the list “test_list”.
Method 2: Using chain.from_iterable() + join()
In this, we perform the task of flattening of characters using chain.from_iterable(), after that join() is used for concatenation of all strings, and indices are extracted in range.
Python3
# import module from itertools import chain # initializing list test_list = [ "geeksforgeeks" , "is" , "best" , "for" , "geeks" ] # printing original list print ( "The original list is : " + str (test_list)) # initializing char range strt, end = 14 , 30 # strt and end used to get desired characters res = ''.join(chain.from_iterable(test_list))[strt : end] # printing result print ( "Range characters : " + str (res)) |
The original list is : ['geeksforgeeks', 'is', 'best', 'for', 'geeks'] Range characters : sbestforgeeks
The Time and Space Complexity for all the methods are the same:
Time Complexity: O(n)
Space Complexity: O(n)
Approach 3: Using reduce() + join()
In this approach, we use the reduce() function from the functools module to perform the concatenation of all strings in the list. This method concatenates all strings by successively calling the lambda function.
Python3
# Approach 3: Using reduce() + join() # import module from functools import reduce # initializing list test_list = [ "geeksforgeeks" , "is" , "best" , "for" , "geeks" ] # printing original list print ( "The original list is : " + str (test_list)) # initializing char range strt, end = 14 , 30 # using reduce to perform concatenation of all strings res = reduce ( lambda x, y: x + y, test_list)[strt : end] # strt and end used to get desired characters # printing result print ( "Range characters : " + str (res)) |
The original list is : ['geeksforgeeks', 'is', 'best', 'for', 'geeks'] Range characters : sbestforgeeks
The time complexity of this approach is O(n) and the auxiliary space is also O(n).
Please Login to comment...