Python làm phẳng danh sách đệ quy
Khi được yêu cầu làm phẳng một danh sách lồng nhau đã cho bằng cách sử dụng kỹ thuật đệ quy, lập chỉ mục đơn giản và phương thức 'isinstance' có thể được sử dụng cùng với đệ quy Show Đệ quy tính toán đầu ra của các bit nhỏ của vấn đề lớn hơn và kết hợp các bit này để đưa ra giải pháp cho vấn đề lớn hơn Thí dụDưới đây là một minh chứng cho điều tương tự - Bản thử trực tiếp 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("The list is :") print(my_list) print("The list after flattening is : ") print(flatten_list(my_list)) đầu raThe list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56] Giải trình
Cập nhật ngày 12-Mar-2021 12. 26. 58 Danh sách là cấu trúc dữ liệu linh hoạt nhất trong Python. Trong khi đó, danh sách 2D thường được gọi là danh sách danh sách, là một đối tượng danh sách trong đó mọi mục đều là danh sách - ví dụ:. 6Nội dung chính Hiển thị
Làm phẳng danh sách các danh sách đòi hỏi phải chuyển đổi danh sách 2D thành danh sách 1D bằng cách bỏ lồng từng mục danh sách được lưu trữ trong danh sách danh sách - i. e. , chuyển đổi 7 thành 8Quá trình làm phẳng có thể được thực hiện bằng cách sử dụng các vòng lặp lồng nhau, hiểu danh sách, đệ quy, các hàm tích hợp hoặc bằng cách nhập các thư viện trong Python tùy thuộc vào mức độ đều đặn và độ sâu của các danh sách lồng nhau Các loại danh sách lồng nhauVì Python được gõ yếu, bạn có thể gặp các danh sách danh sách thường xuyên và không thường xuyên Danh sách danh sách thông thườngMọi phần tử của danh sách này đều là danh sách con, do đó tuân thủ tính đồng nhất của loại phần tử. 7 là danh sách chính quy của danh sách vì 0 thuộc loại 1. Danh sách danh sách bất thườngMọi phần tử của danh sách này đều là danh sách con hoặc mục không thuộc danh sách (ví dụ: số nguyên hoặc chuỗi). Do đó, có sự bất thường về loại phần tử. Thí dụ. 2 trong đó 3 và 4 thuộc loại _______ 61 và ________ 66 thuộc loại _______ 67Làm phẳng danh sách các danh sách bằng cách sử dụng Nested for LoopsĐây là cách tiếp cận mạnh mẽ để có được danh sách phẳng bằng cách chọn mọi phần tử từ danh sách danh sách và đặt nó vào danh sách 1D Mã trực quan như được hiển thị bên dưới và hoạt động cho cả danh sách danh sách thông thường và không thường xuyên The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]4 Kết quả này trong
Làm phẳng danh sách các danh sách bằng cách hiểu danh sáchCách tiếp cận này cung cấp một giải pháp tao nhã nhưng ít trực quan hơn để tạo danh sách phẳng dựa trên danh sách 2D hiện có
Cái nào sẽ xuất ra như sau The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]7 Làm phẳng danh sách các danh sách theo cách đệ quyDanh sách 2D cũng có thể được làm phẳng theo cách đệ quy. Việc thực hiện dưới đây hoạt động cho cả danh sách danh sách thường xuyên và không thường xuyên The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]8 Cái nào sẽ cho chúng ta The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]9 Sử dụng thư việnBạn cũng có thể nhờ đến sự trợ giúp của các thư viện Python cho nhiệm vụ này Làm phẳng danh sách các danh sách bằng cách sử dụng funcools (reduce() và iconcat())Hàm 8 thực hiện thao tác nối cơ bản và được áp dụng tích lũy cho các mục của danh sách danh sách, từ trái sang phải, để giảm nó thành một danh sách duy nhất 1Điều gì sẽ cho chúng ta kết quả mong muốn 2Làm phẳng danh sách các danh sách bằng itertools (chain())Cách tiếp cận này là lý tưởng để chuyển đổi danh sách 2-D thành một danh sách phẳng vì nó coi các chuỗi liên tiếp là một chuỗi duy nhất bằng cách lặp qua lần lặp được truyền dưới dạng đối số theo cách tuần tự 3Một lần nữa, điều này sẽ cho chúng ta một danh sách phẳng làm đầu ra 4Làm phẳng danh sách các danh sách bằng cách sử dụng numpy (nối () và phẳng ())Numpy cung cấp các hoạt động phổ biến bao gồm nối các mảng 2D thông thường theo hàng hoặc theo cột. Chúng tôi cũng đang sử dụng thuộc tính 9 để nhận trình vòng lặp 1D trên mảng nhằm đạt được mục tiêu của mình. Tuy nhiên cách này tương đối chậm 0Cung cấp cho chúng tôi đầu ra mong muốn The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]7 Sử dụng chức năng tích hợpNhiệm vụ làm phẳng cũng có thể được thực hiện bằng cách sử dụng các hàm tích hợp sẵn mà Python cung cấp Làm phẳng danh sách các danh sách bằng cách sử dụng tổngTổng hợp các danh sách bên trong là một giải pháp khác. Hàm có hai tham số. The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]70 là một danh sách các danh sách và The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]71 là một danh sách trống trong trường hợp của chúng tôi, đóng vai trò là danh sách phẳng ban đầu mà các mục của danh sách con bên trong được thêm vào Cách tiếp cận này thuận tiện vì bạn không phải nhập bất kỳ thứ gì nhưng chậm hơn so với hàm The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]72 và hàm The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]73 khi số lượng danh sách con lớn Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó 2Với đầu ra The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]7 Làm phẳng danh sách các danh sách bằng LambdaMột chức năng ẩn danh có thể được xác định bằng từ khóa lambda. Danh sách thông thường/không thường xuyên được chuyển làm đối số cho hàm ẩn danh này và việc đánh giá biểu thức được thực hiện để có được danh sách 1D phẳng 4Chúng tôi một lần nữa sẽ nhận được kết quả mong muốn 5Sự kết luậnTrong bài viết này, chúng tôi đã cung cấp một danh sách đầy đủ các cách chúng tôi có thể hoàn thành nhiệm vụ làm phẳng danh sách các danh sách trong Python |