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.