Thuật ngữ "làm phẳng" là gì?
Thuật ngữ "làm phẳng" trong lập trình mô tả việc lấy một danh sách gồm các danh sách con lồng nhau và trả về một danh sách duy nhất có tất cả các giá trị từ các danh sách con được nối với nhau
Làm phẳng là quy trình chuyển đổi nhiều bộ sưu tập thành một bộ sưu tập chứa tất cả các phần tử trong bộ sưu tập mà bạn có trước đó
Danh sách Python là gì?
Danh sách là một trong những cấu trúc dữ liệu linh hoạt nhất trong Python. Chuyển đổi một danh sách thành một danh sách được gọi là "làm phẳng danh sách"
Danh sách Python có thể chứa nhiều thứ nguyên. Điều này có nghĩa là bạn có một danh sách trong danh sách. Đôi khi được gọi là "danh sách lồng nhau", những danh sách này có thể được chuyển đổi lại thành danh sách thông thường
Có hai loại danh sách lồng nhau
- Danh sách lồng nhau bất thường
- Danh sách lồng nhau thông thường
Mỗi phần tử của danh sách này là một danh sách con, do đó tuân thủ tính đồng nhất của loại phần tử. Mọ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. Do đó, có sự bất thường về loại phần tử
Bạn có ý nghĩa gì bằng cách làm phẳng một danh sách?
Làm phẳng danh sách có nghĩa là lấy danh sách các danh sách con lồng nhau và trả về một danh sách chứa tất cả các giá trị của danh sách con. Trước tiên, hãy xem cách làm phẳng một danh sách trong lập trình Python
Python làm phẳng danh sách
3 cách dễ dàng để làm phẳng một danh sách trong Python
- Sử dụng hiểu danh sách
- Sử dụng itertools. phương thức chuỗi []
- Sử dụng các phương thức numpy concatenate[] và flat[]
Cách tiếp cận 1. Sử dụng hiểu danh sách
Khả năng hiểu danh sách cung cấp một cú pháp ngắn hơn khi bạn muốn tạo một danh sách mới dựa trên các giá trị của danh sách hiện có
Việc hiểu danh sách bao gồm các dấu ngoặc chứa biểu thức được thực thi cho từng phần tử và vòng lặp for để lặp qua từng phần tử
Bạn có thể sử dụng khả năng hiểu danh sách để tạo danh sách mới bằng cách làm phẳng danh sách hiện có
original_list = [[11, 21, 30], [19, 63, 71], [81, 99]] flatten_list = [element for sublist in original_list for element in sublist] print["Original list", original_list] print["Flattened list", flatten_list]
đầu ra
Original list [[11, 21, 30], [19, 63, 71], [81, 99]] Flattened list [11, 21, 30, 19, 63, 71, 81, 99]
Bạn có thể thấy rằng chúng tôi đã làm phẳng một danh sách.
Khả năng hiểu danh sách cung cấp một cách ngắn gọn để tạo danh sách
Cách tiếp cận 2. Sử dụng itertools
Sử dụng itertools là lý tưởng để chuyển đổi danh sách 2D thành một danh sách phẳng. Điều này là do 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ố một cách tuần tự
import itertools original_list = [[11, 21, 30], [19, 63, 71], [81, 99]] flatten_list = list[itertools.chain[*original_list]] print["Original list", original_list] print["Flattened list", flatten_list]
đầu ra
Original list [[11, 21, 30], [19, 63, 71], [81, 99]] Flattened list [11, 21, 30, 19, 63, 71, 81, 99]
Và chúng tôi có danh sách phẳng ở đầu ra
Mặc dù itertools là một cách hiệu quả để làm phẳng danh sách, nhưng nó nâng cao hơn so với cách tiếp cận cuối cùng mà chúng ta đã thảo luận
Điều này là do bạn phải nhập itertools vào mã của mình để giới thiệu một phụ thuộc mới. Ngoài ra, phương thức chain[] liên quan đến việc giải nén có thể khó hiểu
Cách tiếp cận 3. Sử dụng numpy [nối[] và phẳng[]]
Để làm phẳng danh sách các danh sách trong Python, hãy sử dụng lệnh np. nối[] và np. chức năng 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 sử dụng thuộc tính phẳng để có trình vòng lặp 1D trên mảng nhằm đạt được mục tiêu của mình
import numpy as np original_list = [[11, 21, 30], [19, 63, 71], [81, 99]] flatten_list = list[np.concatenate[original_list].flat] print["Original list", original_list] print["Flattened list", flatten_list]
đầu ra
Original list [[11, 21, 30], [19, 63, 71], [81, 99]] Flattened list [11, 21, 30, 19, 63, 71, 81, 99]
Bạn có thể thấy rằng chúng tôi đã làm phẳng một danh sách gốc thành một danh sách được làm phẳng bằng cách sử dụng list[], np. nối [] và np. phẳng[] phương pháp
Phần kết luận
Cách tiếp cận tốt nhất để làm phẳng danh sách các danh sách trong Python là sử dụng khả năng hiểu danh sách. Nó sẽ tạo một danh sách phẳng mới từ một danh sách hiện có