Khi cần làm phẳng (flatten) list không dùng đệ quy, có thể dùng hàm lambda, phương thức 'sum', 'map' và 'isinstance'.
List lưu trữ giá trị đa dạng.
Phương thức 'isinstance' kiểm tra tham số có thuộc kiểu dữ liệu cụ thể không.
Hàm vô danh (anonymous function) định nghĩa không tên. Thường dùng 'def', nhưng vô danh dùng 'lambda'. Nhận một biểu thức, có thể nhiều tham số. Dùng biểu thức trả về kết quả.
Hàm map áp dụng hàm/phép toán cho mỗi item trong iterable (list, tuple). Trả về list.
Phương thức 'sum' cộng giá trị số trong iterable.
Ví dụ
my_list = [[[11, [[32]], [[[53]]]], [[64], 75]], [[6, 89, 99]]]
flattened_list = lambda my_list: sum(map(flattened_list, my_list), []) if isinstance(my_list, list) else [my_list]
print("List gốc: ")
print(my_list)
print("List làm phẳng: ")
print(flattened_list(my_list))
Đầu ra
List gốc: [[[11, [[32]], [[[53]]]], [[64], 75]], [[6, 89, 99]]] List làm phẳng: [11, 32, 53, 64, 75, 6, 89, 99]
Giải thích
- Định nghĩa list lồng nhau, hiển thị.
- Cộng các phần tử bằng 'sum', áp dụng cho mỗi phần tử bằng 'map'.
- Kết quả gán biến.
- Hiển thị đầu ra.