Skip to content
Related Articles
Open in App
Not now

Related Articles

Python | Get first element of each sublist

Improve Article
Save Article
  • Difficulty Level : Hard
  • Last Updated : 02 Jan, 2023
Improve Article
Save Article

Given a list of lists, write a Python program to extract first element of each sublist in the given list of lists. Examples:

Input : [[1, 2], [3, 4, 5], [6, 7, 8, 9]]
Output : [1, 3, 6]

Input : [['x', 'y', 'z'], ['m'], ['a', 'b'], ['u', 'v']]
Output : ['x', 'm', 'a', 'u']

  Approach #1 : List comprehension 

Python3




# Python3 program to extract first and last
# element of each sublist in a list of lists
 
def Extract(lst):
    return [item[0] for item in lst]
     
# Driver code
lst = [[1, 2], [3, 4, 5], [6, 7, 8, 9]]
print(Extract(lst))

Output:

[1, 3, 6]

Time Complexity: O(n)

Space Complexity: O(n) (length of the list given as argument)

  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. Thus, all the first element will become the first tuple of the zipped list. Returning the 0th element will thus, solve the purpose. 

Python3




# Python3 program to extract first and last
# element of each sublist in a list of lists
 
def Extract(lst):
    return list(list(zip(*lst))[0])
     
# Driver code
lst = [[1, 2], [3, 4, 5], [6, 7, 8, 9]]
print(Extract(lst))

Output:

[1, 3, 6]

Time Complexity: O(n) (zip function has complexity of O(1) and conversion to list has O(n))

Space Complexity: O(n) (length of the list given as argument)

Another method of using zip is given below:- 

Python3




def Extract(lst):
    return list(next(zip(*lst)))

  Approach #3 : Using itemgetter() 

Python3




# 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(0), lst ))
     
# Driver code
lst = [[1, 2], [3, 4, 5], [6, 7, 8, 9]]
print(Extract(lst))

Output:

[1, 3, 6]

Time Complexity: O(n) (itemgetter has O(1) and conversion to list O(n))

Space Complexity: O(n)

 Approach #4 : Using reduce

You can use the reduce function from the functools library to iteratively apply a lambda function to the list of lists and build a new list containing the first elements of each sublist.

Python3




from functools import reduce
# Python3 program to extract first and last
# element of each sublist in a list of lists
def extract_first(lst):
    return reduce(lambda acc, x: acc + [x[0]] if x else acc, lst, [])
# Driver code
lst = [[1, 2], [3, 4, 5], [6, 7, 8, 9]]
print(extract_first(lst))

Output

[1, 3, 6]

Time Complexity: O(n)

Space Complexity: O(n) 


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!