Hướng dẫn flatten multi-level list python - san phẳng python danh sách đa cấp

Giới thiệu

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 là chính danh sách - ví dụ:

Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
6.

Nội phân chính

  • Giới thiệu
  • Các loại danh sách lồng nhau
  • Danh sách các danh sách sử dụng các vòng lặp được lồng cho các vòng
  • Danh sách danh sách sử dụng danh sách sử dụng danh sách hiểu biết
  • Danh sách dẹt của danh sách đệ quy
  • Sử dụng thư viện
  • Sử dụng các chức năng tích hợp
  • Sự kết luận
  • Làm thế nào để bạn làm phẳng trong Python?
  • Làm thế nào để tôi làm phẳng một danh sách các danh sách trong Python?
  • Làm cách nào để chuyển đổi một người phụ thành một danh sách trong Python?
  • Làm thế nào để bạn mở ra một danh sách trong Python?

Làm phẳng một 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 đặt lại từng mục danh sách được lưu trữ trong danh sách các danh sách - tức là, chuyển đổi

Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
7 thành
Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8.

Quá trình làm phẳng có thể được thực hiện bằng cách sử dụng lồng nhau cho các vòng lặp, danh sách toàn diện, đệ quy, các chức năng 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 tính đều đặn và độ sâu của danh sách lồng nhau.

Các loại danh sách lồng nhau

Danh sách các danh sách sử dụng các vòng lặp được lồng cho các vòng

Danh sách danh sách sử dụng danh sách sử dụng danh sách hiểu biết

Danh sách dẹt của danh sách đệ quy
Example:

Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
7 is a regular list of lists as
regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
flat_list = [item for sublist in regular_list for item in sublist]
print['Original list', regular_list]
print['Transformed list', flat_list]
0 is of type
regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
flat_list = [item for sublist in regular_list for item in sublist]
print['Original list', regular_list]
print['Transformed list', flat_list]
1.

Sử dụng thư viện

Sử dụng các chức năng tích hợp

Danh sách các danh sách sử dụng các vòng lặp được lồng cho các vòng

Danh sách danh sách sử dụng danh sách sử dụng danh sách hiểu biết

Danh sách dẹt của danh sách đệ quy

def flatten_list[_2d_list]:
    flat_list = []
    # Iterate through the outer list
    for element in _2d_list:
        if type[element] is list:
            # If the element is of type list, iterate through the sublist
            for item in element:
                flat_list.append[item]
        else:
            flat_list.append[element]
    return flat_list

nested_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
print['Original List', nested_list]
print['Transformed Flat List', flatten_list[nested_list]]

Sử dụng thư viện

Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Danh sách danh sách sử dụng danh sách sử dụng danh sách hiểu biết

Danh sách dẹt của danh sách đệ quy

regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
flat_list = [item for sublist in regular_list for item in sublist]
print['Original list', regular_list]
print['Transformed list', flat_list]

Sử dụng thư viện

Original list [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
Transformed list [1, 2, 3, 4, 5, 6, 7, 8, 9]

Danh sách dẹt của danh sách đệ quy

Sử dụng thư viện

def flatten[list_of_lists]:
    if len[list_of_lists] == 0:
        return list_of_lists
    if isinstance[list_of_lists[0], list]:
        return flatten[list_of_lists[0]] + flatten[list_of_lists[1:]]
    return list_of_lists[:1] + flatten[list_of_lists[1:]]


print[flatten[[[1, 2, 3, 4], [5, 6, 7], [8, 9], 10]]]

Sử dụng các chức năng tích hợp

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Sử dụng thư viện

Sử dụng các chức năng tích hợp

Sự kết luận

Làm thế nào để bạn làm phẳng trong Python?

import functools
import operator
regular_list = []

# Transform irregular 2D list into a regular one.
def transform[nested_list]:
    for ele in nested_list:
        if type[ele] is list:
            regular_list.append[ele]
        else:
            regular_list.append[[ele]]
    return regular_list


irregular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10], 11]
regular_2D_list = transform[irregular_list]
print['Original list', irregular_list]
print['Transformed list', functools.reduce[operator.iconcat, regular_2D_list, []]]

Làm thế nào để tôi làm phẳng một danh sách các danh sách trong Python?

Original list [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10], 11]
Transformed list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

Làm cách nào để chuyển đổi một người phụ thành một danh sách trong Python?

Làm thế nào để bạn mở ra một danh sách trong Python?

import itertools

regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
flat_list = list[itertools.chain[*regular_list]]

print['Original list', regular_list]
print['Transformed list', flat_list]

Làm phẳng một 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 đặt lại từng mục danh sách được lưu trữ trong danh sách các danh sách - tức là, chuyển đổi

Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
7 thành
Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
8.

Original list [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Quá trình làm phẳng có thể được thực hiện bằng cách sử dụng lồng nhau cho các vòng lặp, danh sách toàn diện, đệ quy, các chức năng 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 tính đều đặn và độ sâu của danh sách lồng nhau.

Vì Python được đánh máy yếu, bạn có thể gặp danh sách danh sách thường xuyên và bất thường.

Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
0

Danh sách danh sách thường xuyên

Original list [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
Transformed list [1, 2, 3, 4, 5, 6, 7, 8, 9]

Mỗi yếu tố của danh sách này là một người phụ, do đó tuân thủ tính đồng nhất của loại phần tử. Ví dụ:
Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
7 là danh sách thường xuyên các danh sách là
regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
flat_list = [item for sublist in regular_list for item in sublist]
print['Original list', regular_list]
print['Transformed list', flat_list]
0 thuộc loại
regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
flat_list = [item for sublist in regular_list for item in sublist]
print['Original list', regular_list]
print['Transformed list', flat_list]
1.

Danh sách bất thường của danh sách

Mỗi yếu tố của danh sách này là một mục dưới hoặc một mục không phải là danh sách [ví dụ: số nguyên hoặc chuỗi]. Do đó, có một sự bất thường về loại yếu tố. Ví dụ:
regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
flat_list = [item for sublist in regular_list for item in sublist]
print['Original list', regular_list]
print['Transformed list', flat_list]
2 trong đó
regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
flat_list = [item for sublist in regular_list for item in sublist]
print['Original list', regular_list]
print['Transformed list', flat_list]
3 và
regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
flat_list = [item for sublist in regular_list for item in sublist]
print['Original list', regular_list]
print['Transformed list', flat_list]
4 thuộc loại
regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
flat_list = [item for sublist in regular_list for item in sublist]
print['Original list', regular_list]
print['Transformed list', flat_list]
1 và
regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
flat_list = [item for sublist in regular_list for item in sublist]
print['Original list', regular_list]
print['Transformed list', flat_list]
6 là loại
regular_list = [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
flat_list = [item for sublist in regular_list for item in sublist]
print['Original list', regular_list]
print['Transformed list', flat_list]
7.

Đây là một cách tiếp cận vũ lực để có được một danh sách phẳng bằng cách chọn mọi yếu tố từ danh sách danh sách và đưa nó vào danh sách 1D.

Mã này 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à bất thường:

Kết quả này trong:

Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2

Cách tiếp cận này cung cấp một giải pháp thanh lịch 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ó:

Original list [[1, 2, 3, 4], [5, 6, 7], [8, 9]]
Transformed list [1, 2, 3, 4, 5, 6, 7, 8, 9]

Sẽ xuất ra như sau:

Danh sách 2D cũng có thể được làm phẳng đệ quy là tốt. Việc triển khai dưới đây hoạt động cả cho danh sách danh sách thường xuyên và bất thường:

Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
4

Mà sẽ cung cấp cho chúng tôi:

Original List [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
Transformed Flat List [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
5

Sự kết luận

Làm thế nào để bạn làm phẳng trong Python?

Làm thế nào để bạn làm phẳng trong Python?

Có ba cách để làm phẳng danh sách Python:..

Sử dụng danh sách hiểu biết ..

Sử dụng một vòng lặp cho vòng lặp ..

Sử dụng itertools. Chuỗi [] Phương thức ..

Làm thế nào để tôi làm phẳng một danh sách các danh sách trong Python?

Để làm phẳng danh sách các danh sách trong Python, hãy sử dụng thư viện Numpy, Concatenate [] và FLAT []. Numpy cung cấp các hoạt động chung, bao gồm cả các mảng 2D thông thường thông thường hoặc thông thái cột. Chúng tôi cũng sử dụng thuộc tính phẳng để có trình lặp 1D qua mảng để đạt được mục tiêu của chúng tôi.use the numpy library, concatenate[], and flat[] function. Numpy offers common operations, including concatenating regular 2D arrays row-wise or column-wise. We also use the flat attribute to get a 1D iterator over the array to achieve our goal.

Làm cách nào để chuyển đổi một người phụ thành một danh sách trong Python?

Trong ví dụ này, chúng tôi sẽ sử dụng danh sách hiểu để lặp lại danh sách trước tiên và sau đó chúng tôi đang lặp lại danh sách phụ sử dụng cho Loop. Sau đó, chúng tôi đang nối thêm phần tử trong danh sách mới của chúng tôi, Flat Flatlist, sử dụng danh sách hiểu danh sách cung cấp cho chúng tôi một danh sách phẳng 1 chiều.use list comprehension to Iterate the list first, and then we are iterating the sub-list using for loop. After that, we are appending the element in our new list “flatList” using a List Comprehension which gives us a flat list of 1 dimensional.

Làm thế nào để bạn mở ra một danh sách trong Python?

Làm phẳng một 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 không tổ chức mỗi mục danh sách được lưu trữ trong danh sách các danh sách - tức là, chuyển đổi [[1, 2, 3], [4, 5, 6], [7 , 8, 9]] vào [1, 2, 3, 4, 5, 6, 7, 8, 9].converting a 2D list into a 1D list by un-nesting each list item stored in the list of lists - i.e., converting [[1, 2, 3], [4, 5, 6], [7, 8, 9]] into [1, 2, 3, 4, 5, 6, 7, 8, 9] .

Bài Viết Liên Quan

Chủ Đề