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
def Extract(lst):
return [item[ - 1 ] for item in lst]
lst = [[ 1 , 2 , 3 ], [ 4 , 5 ], [ 6 , 7 , 8 , 9 ]]
print (Extract(lst))
|
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
def Extract(lst):
return list ( zip ( * [ reversed (el) for el in lst]))[ 0 ]
lst = [[ 1 , 2 , 3 ], [ 4 , 5 ], [ 6 , 7 , 8 , 9 ]]
print (Extract(lst))
|
Time Complexity: O(N)
Auxiliary Space: O(1)
Another way of using zip is to use it with Python map, passing reversed as function.
Python3
def Extract(lst):
return list ( list ( zip ( * map ( reversed , lst)))[ 0 ])
|
Time Complexity: O(NlogN)
Auxiliary Space: O(N)
Approach #3 : Using itemgetter()
Python3
from operator import itemgetter
def Extract(lst):
return list ( map (itemgetter( - 1 ), lst ))
lst = [[ 1 , 2 , 3 ], [ 4 , 5 ], [ 6 , 7 , 8 , 9 ]]
print (Extract(lst))
|
Time Complexity: O(NlogN)
Auxiliary Space: O(N)
Approach #4 : Using len() method and indexing
Python3
def Extract(lst):
res = []
for i in lst:
res.append(i[ len (i) - 1 ])
return res
lst = [[ 1 , 2 , 3 ], [ 4 , 5 ], [ 6 , 7 , 8 , 9 ]]
print (Extract(lst))
|
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
def Extract(lst):
return list ( map ( lambda x: x[ - 1 ], lst))
lst = [[ 1 , 2 , 3 ], [ 4 , 5 ], [ 6 , 7 , 8 , 9 ]]
print (Extract(lst))
|
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.