Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách làm phẳng danh sách lồng nhau (list of lists) trong Python

Khi có một list mà mỗi phần tử cũng là một list, "làm phẳng" (flatten) nghĩa là gộp tất cả phần tử con thành một list đơn giản.

Các phương pháp phổ biến

1. List comprehension (Pythonic, ngắn gọn)

nested = [[1, 2], [3, 4], [5, 6]]
flat = [item for sublist in nested for item in sublist]
print(flat)  # [1, 2, 3, 4, 5, 6]

2. itertools.chain (hiệu quả bộ nhớ)

import itertools
flat = list(itertools.chain.from_iterable(nested))

3. sum() (chỉ dùng cho list nhỏ, chậm O(n²))

flat = sum(nested, [])

4. Với list lồng nhiều cấp (nested arbitrarily), dùng đệ quy hoặc more_itertools.collapse

def flatten(lst):
    result = []
    for item in lst:
        if isinstance(item, list):
            result.extend(flatten(item))
        else:
            result.append(item)
    return result

Khuyến nghị: List comprehension cho trường hợp đơn giản; itertools.chain cho hiệu năng; đệ quy cho lồng sâu.