Khi cần làm phẳng list lồng nhau dùng đệ quy, dùng indexing đơn giản và phương thức 'isinstance' kết hợp đệ quy.
Đệ quy tính toán phần nhỏ, kết hợp cho bài toán lớn.
Ví dụ
def flatten_list(my_list):
if my_list == []:
return my_list
if isinstance(my_list[0], list):
return flatten_list(my_list[0]) + flatten_list(my_list[1:])
return my_list[:1] + flatten_list(my_list[1:])
my_list = [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]]
print("List là: ")
print(my_list)
print("List sau khi làm phẳng: ")
print(flatten_list(my_list))
Đầu ra
List là: [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] List sau khi làm phẳng: [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]
Giải thích
- Định nghĩa 'flatten_list' nhận list.
- Kiểm tra kiểu phần tử đầu list.
- Nếu là list, nối kết quả đệ quy phần tử đầu và phần còn lại.
- Ngược lại, giữ phần tử đầu, nối với đệ quy phần còn lại.
- Ngoài hàm, định nghĩa list lồng, hiển thị.
- Gọi phương thức với list.
- Hiển thị đầu ra.