# Python - Ways to flatten a 2D list

A list is a collection which is ordered and changeable. In Python lists are written with square brackets. You access the list items by referring to the index number. Negative indexing means beginning from the end, -1 refers to the last item. You can specify a range of indexes by specifying where to start and where to end the range. When specifying a range, the return value will be a new list with the specified items.

## Example

Live Demo

# 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))
# 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))
# 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))
# 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))
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)
#priniting initial list
print("Flattened List ",flatten_list(ini_list))
# printing flattened list

## Output

('initial list ', '[[1, 2, 3], [3, 6, 7], [7, 5, 4]]')
('final_result', '[1, 2, 3, 3, 6, 7, 7, 5, 4]')
('initial list ', '[[1, 2, 3], [3, 6, 7], [7, 5, 4]]')
('final_result', '[1, 2, 3, 3, 6, 7, 7, 5, 4]')
('initial list ', '[[1, 2, 3], [3, 6, 7], [7, 5, 4]]')
('final_result', '[1, 2, 3, 3, 6, 7, 7, 5, 4]')
('initial list ', '[[1, 2, 3], [3, 6, 7], [7, 5, 4]]')
('final_result', '[1, 2, 3, 3, 6, 7, 7, 5, 4]')
('Initial list ', [[1, 2, 3], [3, 6, 7], [7, 5, 4]])
('Flattened List ', [1, 2, 3, 3, 6, 7, 7, 5, 4])