PYTHON

Flatten a List of Lists in Python

Discover concise Python techniques, including list comprehensions and `itertools.chain.from_iterable`, to efficiently flatten nested lists into a single, one-dimensional list, useful for processing complex data structures in web applications.

import itertools

# Sample data: A nested list
nested_list = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]

# Method 1: Using a nested list comprehension (basic and readable)
flattened_comprehension = [item for sublist in nested_list for item in sublist]
print(f"Flattened (list comprehension): {flattened_comprehension}")

# Method 2: Using itertools.chain.from_iterable (efficient for large lists)
flattened_itertools = list(itertools.chain.from_iterable(nested_list))
print(f"Flattened (itertools.chain): {flattened_itertools}")

# Example for web development: Processing form data with multiple selections
form_selections = [
    ['apple', 'banana'],
    ['cherry'],
    ['date', 'elderberry', 'fig']
]
all_selected_items = list(itertools.chain.from_iterable(form_selections))
print(f"All selected items: {all_selected_items}")

# Method 3: Handling mixed lists (list of lists and individual elements)
mixed_list = [[1, 2], 3, [4, 5]]
# This requires a function to check type and recurse if needed for arbitrary nesting
def flatten_mixed(lst):
    flat_list = []
    for item in lst:
        if isinstance(item, list):
            flat_list.extend(flatten_mixed(item))
        else:
            flat_list.append(item)
    return flat_list
print(f"Flattened (mixed list recursive): {flatten_mixed(mixed_list)}")
How it works: This snippet illustrates how to flatten a list of lists into a single list. The nested list comprehension is often the most Pythonic and readable approach for simple cases. For very large nested lists, `itertools.chain.from_iterable` is generally more memory-efficient as it creates an iterator rather than an intermediate list. A recursive function is also shown for flattening lists that might contain both sublists and individual elements, making it suitable for processing diverse data structures from sources like user input or API responses.

Need help integrating this into your project?

Our team of expert developers can help you build your custom application from scratch.

Hire DigitalCodeLabs