Hướng dẫn nested list comprehension python - danh sách lồng nhau hiểu python
Danh sách lồng nhau của Python là gì?Một danh sách có thể chứa bất kỳ đối tượng sắp xếp nào, ngay cả một danh sách khác (người phụ), từ đó có thể chứa chính những người phụ, v.v. Điều này được gọi là danh sách lồng nhau.nested list. Show
Nội phân Chính showShow
Nội phân chính
Những gì một danh sách các danh sách? Chuyển đổi danh sách danh sách thành danh sách phẳngCách tạo danh sách các danh sách trong Python This list contains 3 different lists of integers. We want to convert this list of lists in to a single flat list, that should contain only integers like, [1, 2, 3, 4, 5, 11, 22, 33, 44, 55, 17, 18, 19, 20, 21] There are different ways to do this, Phân tích bộ nhớTạo một danh sách các danh sách trong Python Output: Flat List : [1, 2, 3, 4, 5, 11, 22, 33, 44, 55, 17, 18, 19, 20, 21] Although this is a single line solution but this kind of coding is not easy to maintain. So, let’s see some other options too, Python | Chuyển đổi danh sách lồng nhau thành danh sách phẳngDanh sách lồng nhau trong Python It extends the existing list object by appending all the contents of given iterable. Let’s use this to convert list of lists to a flat list, # List of list listOfList = [ [1, 2, 3, 4, 5], [11, 22, 33, 44, 55], [17, 18, 19, 20, 21] ] flatList = [] for elem in listOfList: flatList.extend(elem) print('Flat List : ', flatList) Output: Flat List : [1, 2, 3, 4, 5, 11, 22, 33, 44, 55, 17, 18, 19, 20, 21] How did it worked ? Những gì một danh sách các danh sách? Video liên Quan Bạn có thể sử dụng chúng để sắp xếp dữ liệu vào các cấu trúc phân cấp. Giả sử chúng ta có một danh sách các danh sách, tức là.# Danh sách danh sách Danh sáchflist = [[1, 2, 3, 4, 5], [11, 22, 33, 44, 55], [17, 18, 19, 20, 21]] Danh sách này chứa 3 danh sách khác nhau của số nguyên. Chúng tôi muốn chuyển đổi danh sách danh sách này thành một danh sách căn hộ duy nhất, chỉ chứa các số nguyên như, [1, 2, 3, 4, 5, 11, 22, 33, 44, 55, 17, 18, 19, 20, 20, , 21] Có nhiều cách khác nhau để làm điều này, Let’s use this to convert list of lists to a flat list, flatList = [] for elem in listOfList: for item in elem: flatList.append(item) print('Flat List : ', flatList) Output: Flat List : [1, 2, 3, 4, 5, 11, 22, 33, 44, 55, 17, 18, 19, 20, 21] How did it worked ? Chúng tôi sẽ sử dụng danh sách hiểu để lặp qua danh sách danh sách và sau đó cho mỗi danh sách nội bộ lặp lại lặp lại trên các yếu tố riêng lẻ trong danh sách đó. Sau đó thêm các yếu tố đó vào một danh sách mới, tức là. # Danh sách danh sách Danh sáchflist = [[1, 2, 3, 4, 5], [11, 22, 33, 44, 55], [17, 18, 19, 20, 21]] Danh sách danh sách vào danh sách phẳng flatlist = [item cho elem trong listoflist cho mục trong elem] in ('danh sách phẳng:', flatlist) Đầu ra: Danh sách phẳng: [1, 2, 3, 4, 5, 11, 22, 33, 44, 55, 17, 18, 19, 20, 21] Mặc dù đây là một giải pháp dòng duy nhất nhưng loại mã hóa này không dễ bảo trì. Vì vậy, hãy để chúng tôi xem một số tùy chọn khác, Cách tạo danh sách các danh sách trong PythonNhững gì một danh sách các danh sách?Phân tích bộ nhớappend() method and list comprehension technique to create a list of lists. After creating a list of lists, we will see to access list elements as well. Let's see some examples. Những gì một danh sách các danh sách?Phân tích bộ nhớ: A list of lists in Python is a list object where each list element is a list by itself. Create a list of list in Python by using the square bracket notation to create a nested list [[1, 2, 3], [4, 5, 6], [7, 8, 9]]. Tạo một danh sách các danh sách trong Pythonwell-rounded Python professional—while getting paid in the process? Become a Python freelancer and order your book Leaving the Rat Race with Python on Amazon (Kindle/Print)! Phân tích bộ nhớĐiều quan trọng là bạn hiểu rằng một danh sách chỉ là một loạt các tham chiếu đến các vị trí bộ nhớ. Bằng cách chơi với Code Visualizer, bạn sẽ hiểu sâu hơn về cách Python hoạt động ở cốt lõi của nó: Chỉ cần nhấp vào nút tiếp theo của người dùng để xem mỗi dòng mã mở ra như thế nào. Tạo một danh sách các danh sách trong PythonTạo một danh sách các danh sách bằng cách sử dụng ký hiệu khung vuông. Ví dụ: để tạo một danh sách các danh sách các giá trị số nguyên, sử dụng [[1, 2], [3, 4]]. Mỗi yếu tố danh sách của danh sách bên ngoài là một danh sách lồng nhau. Chuyển đổi danh sách danh sách thành một danh sáchGiả sử, bạn muốn chuyển đổi một danh sách các danh sách [[1, 2], [3, 4]] thành một danh sách duy nhất [1, 2, 3, 4]. Làm thế nào để đạt được điều này? Có các tùy chọn khác nhau:
Tìm ví dụ về cả ba phương thức trong đoạn mã sau: lst = [[1, 2], [3, 4]] # Phương pháp 1: Liệt kê hiểu flat_1 = [x cho l trong lst cho x trong l] # phương pháp 2: Giải nén flat_2 = [ *lst [0], *lst . 1, 2, 3, 4] in (Flat_3) # [1, 2, 3, 4]Do tính đơn giản và hiệu quả của nó, phương pháp hiểu danh sách đầu tiên là vượt trội so với hai phương pháp khác. Python | Chuyển đổi danh sách lồng nhau thành danh sách phẳngNhiệm vụ là chuyển đổi một danh sách lồng nhau thành một danh sách duy nhất trong Python, dù có có bao nhiêu cấp độ làm tổ trong danh sách Python, tất cả đều phải được gỡ bỏ để chuyển đổi nó thành một trong tất cả các giá trị của tất cả Danh sách bên trong dấu ngoặc ngoài cùng nhưng không có bất kỳ dấu ngoặc bên trong. Examples:
Danh sách lồng nhau trong PythonDanh sách toàn diện là một trong những tính năng tuyệt vời nhất của Python. Đó là một cách thông minh và ngắn gọn để tạo danh sách bằng cách lặp lại một đối tượng có thể lặp lại. Sự hiểu biết danh sách lồng nhau không là gì ngoài sự hiểu biết danh sách trong một danh sách hiểu khác khá giống với lồng nhau cho các vòng lặp. Hãy cùng xem một số ví dụ để hiểu những gì mà sự hiểu biết danh sách lồng nhau có thể làm: Ví dụ 1: Tôi muốn tạo một ma trận trông giống như bên dưới: ma trận = [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]] Mã dưới đây sử dụng lồng nhau cho các vòng lặp cho tác vụ đã cho: ma trận = [] Đối với tôi trong phạm vi (5): # Nối một người phụ trợ trống bên trong danh sách Matrix.Append ([]) Đối với J trong phạm vi (5): ma trận [i] .Append (j) in (ma trận) Output: [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [ 0, 1, 2, 3, 4]]] Đầu ra tương tự có thể đạt được bằng cách sử dụng danh sách lồng nhau chỉ trong một dòng: # Danh sách lồng nhau hiểu Matrix = [[J cho J trong phạm vi (5)] cho i trong phạm vi (5)] in (ma trận) [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [ 0, 1, 2, 3, 4]]] [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]] Explanation:
Biểu thức = [j cho j trong phạm vi (5)] -> Đầu ra của biểu thức này giống như ví dụ được thảo luận ở trên. Do đó biểu thức = [0, 1, 2, 3, 4]. Bây giờ chúng tôi chỉ cần thêm đầu ra này cho đến khi biến I lặp lại từ 0 đến 4, sẽ là tổng số 5 lần lặp. Do đó, đầu ra cuối cùng sẽ chỉ là một danh sách đầu ra của biểu thức trên được lặp lại 5 lần. Đầu ra: [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4] , [0, 1, 2, 3, 4]]] Ví dụ 2: Giả sử tôi muốn làm phẳng một danh sách 2-D đã cho: ma trận = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] , 4, 5, 6, 7, 8, 9] Điều này có thể được thực hiện bằng cách sử dụng lồng nhau cho các vòng như sau: Danh sách # 2-D Ma trận = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]] In (Flatten_Matrix) Đầu ra: [1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] Một lần nữa, điều này có thể được thực hiện bằng cách sử dụng khả năng hiểu danh sách lồng nhau đã được hiển thị dưới đây: Danh sách # 2-D Ma trận = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]] # Danh sách lồng nhau hiểu để làm phẳng một ma trận 2 chiều đã cho Flatten_matrix = [Val cho tua lại trong ma trận cho val trong tua lại] In (Flatten_Matrix) Đầu ra: [1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] Explanation:
Đối với mỗi Val như vậy, chúng tôi nhận được đầu ra là Val và chúng tôi nối nó vào danh sách.
Đầu ra mong đợi: Flatten_planets = [‘Venus,‘ Trái đất, ‘Mars,‘ Sao Diêm Vương]] Điều này có thể được thực hiện bằng cách sử dụng một điều kiện nếu bên trong một vòng lặp được hiển thị bên dưới: # 2-D Danh sách các hành tinh Các hành tinh = [['Mercury', 'Venus', 'Earth'], ['Mars', 'Jupiter', 'Saturn'], ['Uranus', 'Sao Hải Vương', 'Sao Diêm Vương']]]]]]]] Flatten_planets = [] cho người phụ trong các hành tinh: Đối với hành tinh trong Dists: Nếu Len (Hành tinh) <6: Flatten_planets.append (hành tinh) In (Flatten_Planets) ['Venus', 'Earth', 'Mars', 'Pluto'] Đầu ra: ['Venus', 'Trái đất', 'Mars', 'Sao Diêm Vương']]] Điều này có thể được thực hiện bằng cách sử dụng một điều kiện nếu bên trong một vòng lặp được hiển thị bên dưới: # 2-D Danh sách các hành tinh Các hành tinh = [['Mercury', 'Venus', 'Earth'], ['Mars', 'Jupiter', 'Saturn'], ['Uranus', 'Sao Hải Vương', 'Sao Diêm Vương']]]]]]]] Flatten_planets = [] Flatten_planets.append (hành tinh) In (Flatten_Planets) ['Venus', 'Earth', 'Mars', 'Pluto'] Explanation:
cho người phụ trong các hành tinh: Đối với hành tinh trong Dists: Nếu Len (Hành tinh) <6: python-list Flatten_planets.append (hành tinh) In (Flatten_Planets) python-list |