Python | Ways to flatten a 2D list
Given a 2D list, Write a Python program to convert the given list into a flattened list.
Method #1: Using chain.iterable()
Python3
# Python code to demonstrate # converting 2d list into 1d list # using chain.from_iterables # import chain from itertools import chain ini_list = [[ 1 , 2 , 3 ], [ 3 , 6 , 7 ], [ 7 , 5 , 4 ]] # printing initial list print ( "initial list " , str (ini_list)) # converting 2d list into 1d # using chain.from_iterables flatten_list = list (chain.from_iterable(ini_list)) # printing flatten_list print ( "final_result" , str (flatten_list)) |
Output:
initial list [[1, 2, 3], [3, 6, 7], [7, 5, 4]] final_result [1, 2, 3, 3, 6, 7, 7, 5, 4]
Method #2: Using list comprehension
Python3
# Python code to demonstrate # converting 2d list into 1d list # using list comprehension # import chain from itertools import chain ini_list = [[ 1 , 2 , 3 ], [ 3 , 6 , 7 ], [ 7 , 5 , 4 ]] # printing initial list print ( "initial list " , str (ini_list)) # converting 2d list into 1d # using list comprehension flatten_list = [j for sub in ini_list for j in sub] # printing flatten_list print ( "final_result" , str (flatten_list)) |
Output:
initial list [[1, 2, 3], [3, 6, 7], [7, 5, 4]] final_result [1, 2, 3, 3, 6, 7, 7, 5, 4]
Method #3: Using functools.reduce
Python3
# Python code to demonstrate # converting 2d list into 1d list # using functools.reduce # import functools from functools import reduce ini_list = [[ 1 , 2 , 3 ], [ 3 , 6 , 7 ], [ 7 , 5 , 4 ]] # printing initial list print ( "initial list " , str (ini_list)) # converting 2d list into 1d # using functools.reduce flatten_list = reduce ( lambda z, y :z + y, ini_list) # printing flatten_list print ( "final_result" , str (flatten_list)) |
Output:
initial list [[1, 2, 3], [3, 6, 7], [7, 5, 4]] final_result [1, 2, 3, 3, 6, 7, 7, 5, 4]
Method #4: Using sum
sum has an optional argument: sum(iterable [, start])
Python3
# Python code to demonstrate # converting 2d list into 1d list # using sum ini_list = [[ 1 , 2 , 3 ], [ 3 , 6 , 7 ], [ 7 , 5 , 4 ]] # printing initial list print ( "initial list " , str (ini_list)) # converting 2d list into 1d flatten_list = sum (ini_list, []) # printing flatten_list print ( "final_result" , str (flatten_list)) # This code is contributed by # Mayank Chaudhary - chaudhary_19 |
Output:
initial list [[1, 2, 3], [3, 6, 7], [7, 5, 4]] final_result [1, 2, 3, 3, 6, 7, 7, 5, 4]
Method #5: Using lambda
Python3
#Python 3 code to flatten nested list #contributed by S Lakshman Rao - kaapalx ini_list = [[ 1 , 2 , 3 ], [ 3 , 6 , 7 ], [ 7 , 5 , 4 ]] #Using lambda flatten_list = lambda y:[x for a in y for x in flatten_list(a)] if type (y) is list else [y] print ( "Initial list " ,ini_list) #printing initial list print ( "Flattened List " ,flatten_list(ini_list)) # printing flattened list |
Output:
Initial list [[1, 2, 3], [3, 6, 7], [7, 5, 4]] Flattened List [1, 2, 3, 3, 6, 7, 7, 5, 4]
Method #6: Using numpy
Python3
#Python 3 code to flatten nested list #Contributed by S Lakshman Rao - kaapalx import numpy ini_list = [[ 1 , 2 , 3 ], [ 3 , 6 , 7 ], [ 7 , 5 , 4 ]] print ( "Initial list " ,ini_list) #Printing Initial list print ( "Flattened List " , list (numpy.concatenate(ini_list).flat)) #Using numpy to flatten list and printing the result |
Output:
Initial list [[1, 2, 3], [3, 6, 7], [7, 5, 4]] Flattened List [1, 2, 3, 3, 6, 7, 7, 5, 4]
Method #7: Using extend() method
Python3
#Python 3 code to flatten nested list ini_list = [[ 1 , 2 , 3 ],[ 3 , 6 , 7 ],[ 7 , 5 , 4 ]] print ( "Initial list " ,ini_list) #Printing Initial list res = [] for i in ini_list: res.extend(i) print ( "Flattened List " ,res) |
Output
Initial list [[1, 2, 3], [3, 6, 7], [7, 5, 4]] Flattened List [1, 2, 3, 3, 6, 7, 7, 5, 4]
Please Login to comment...