Given a list of lists, write a Python program to extract the last element of each sublist in the given list of lists.
Examples:
Input : [[1, 2, 3], [4, 5], [6, 7, 8, 9]] Output : [3, 5, 9] Input : [['x', 'y', 'z'], ['m'], ['a', 'b'], ['u', 'v']] Output : ['z', 'm', 'b', 'v']
Approach #1 : List comprehension
# Python3 program to extract first and last # element of each sublist in a list of lists def Extract(lst):
return [item[ - 1 ] for item in lst]
# Driver code lst = [[ 1 , 2 , 3 ], [ 4 , 5 ], [ 6 , 7 , 8 , 9 ]]
print (Extract(lst))
|
[3, 5, 9]
Time complexity: O(n), where n is the total number of elements in all sublists.
Auxiliary space: O(n), as the program creates a new list to store the extracted last elements of each sublist.
Approach #2 : Using zip and unpacking(*) operator This method uses zip with * or unpacking operator which passes all the items inside the ‘lst’ as arguments to zip function. There is a little trick with extracting last item of list, Instead of using direct zip, use the reversed list iterators.
# Python3 program to extract first and last # element of each sublist in a list of lists def Extract(lst):
return list ( zip ( * [ reversed (el) for el in lst]))[ 0 ]
# Driver code lst = [[ 1 , 2 , 3 ], [ 4 , 5 ], [ 6 , 7 , 8 , 9 ]]
print (Extract(lst))
|
(3, 5, 9)
Time Complexity: O(N)
Auxiliary Space: O(1)
Another way of using zip is to use it with Python map, passing reversed as function.
def Extract(lst):
return list ( list ( zip ( * map ( reversed , lst)))[ 0 ])
|
Time Complexity: O(NlogN)
Auxiliary Space: O(N)
Approach #3 : Using itemgetter()
# Python3 program to extract first and last # element of each sublist in a list of lists from operator import itemgetter
def Extract(lst):
return list ( map (itemgetter( - 1 ), lst ))
# Driver code lst = [[ 1 , 2 , 3 ], [ 4 , 5 ], [ 6 , 7 , 8 , 9 ]]
print (Extract(lst))
|
[3, 5, 9]
Time Complexity: O(NlogN)
Auxiliary Space: O(N)
Approach #4 : Using len() method and indexing
# Python3 program to extract last # element of each sublist in a list of lists def Extract(lst):
res = []
for i in lst:
res.append(i[ len (i) - 1 ])
return res
# Driver code lst = [[ 1 , 2 , 3 ], [ 4 , 5 ], [ 6 , 7 , 8 , 9 ]]
print (Extract(lst))
|
[3, 5, 9]
Time Complexity: O(N)
Auxiliary Space: O(N)
Approach #5: Using the map() function and lambda expression
You could use the map() function and indexing to extract the last element of each sublist in a single line of code. For example:
# Python3 program to extract last # element of each sublist in a list of lists def Extract(lst):
return list ( map ( lambda x: x[ - 1 ], lst))
# Driver code lst = [[ 1 , 2 , 3 ], [ 4 , 5 ], [ 6 , 7 , 8 , 9 ]]
print (Extract(lst))
|
[3, 5, 9]
Time complexity: O(N), where N is the total number of sublists in the list.
Auxiliary space: O(N), where N is the total number of sublists in the list.