w3resource

Python: Flatten a given nested list structure

Python List: Exercise - 72 with Solution

Write a Python program to flatten a given nested list structure.

Sample Solution-1:

Python Code:

def flatten_list(n_list):
    result_list = []
    if not n_list: return result_list
    stack = [list(n_list)]
    while stack:
        c_num = stack.pop()
        next = c_num.pop()
        if c_num: stack.append(c_num)
        if isinstance(next, list):
            if next: stack.append(list(next))
        else: result_list.append(next)
    result_list.reverse()
    return result_list 
n_list = [0, 10, [20, 30], 40, 50, [60, 70, 80], [90, 100, 110, 120]]
print("Original list:") 
print(n_list)
print("\nFlatten list:")
print(flatten_list(n_list))

Sample Output:

Original list:
[0, 10, [20, 30], 40, 50, [60, 70, 80], [90, 100, 110, 120]]

Flatten list:
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]

Flowchart:

Flowchart: Flatten a given nested list structure.

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:


Sample Solution-2:

Loop over elements, use list.extend() if the element is a list, list.append() otherwise.

Python Code:

def flatten_list(nums):
  result = []
  for i in nums:
    result.extend(i) if isinstance(i, list) else result.append(i)
  return result     
n_list = [0, 10, [20, 30], 40, 50, [60, 70, 80], [90, 100, 110, 120]]
print("Original list:") 
print(n_list)
print("\nFlatten list:")
print(flatten_list(n_list))

Sample Output:

Original list:
[0, 10, [20, 30], 40, 50, [60, 70, 80], [90, 100, 110, 120]]

Flatten list:
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]

Flowchart:

Flowchart: Flatten a given nested list structure.

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:


Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Python program to check whether all dictionaries in a list are empty or not.
Next: Write a Python program to remove consecutive (following each other continuously) duplicates (elements) of a given list.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Share this Tutorial / Exercise on : Facebook and Twitter

Python: Tips of the Day

Memory Management:

getrefcount will show how many times an object is used in the memory. It's a fantastic tool that can be used for memory management in any program and it's very convenient too.

Getrefcount will calculate the object usage at a low level ByteCode so it can tend to be higher than expected. For instance when you print a value that value is actually processed multiple times in the background inside the print function itself and getrefcount also counts the instance when the value is called with getrefcount method itself. So, it's safe to say that the count will actually always be at least 1 time higher than expected.

Here is a code to show how many times alphanumeric characters are referenced in a random code:

import sys
x_val = 20
x_val += 1

y_val = "Heritage"

x = sys.getrefcount(x_val)
y = sys.getrefcount(y_val)

print(x, y, sep="\n")

Output:

10
4