Làm phẳng danh sách chuỗi python

ví dụ 1. Sử dụng danh sách hiểu

my_list = [[1], [2, 3], [4, 5, 6, 7]]

flat_list = [num for sublist in my_list for num in sublist]
print[flat_list]

đầu ra

[1, 2, 3, 4, 5, 6, 7]

Đây là một trong những cách Pythonic đơn giản nhất để làm phẳng danh sách

  • Sử dụng hiểu danh sách truy cập danh sách con từ
    [1, 2, 3, 4, 5, 6, 7]
    0, sau đó truy cập từng phần tử của danh sách con
  • Mỗi số phần tử được lưu trữ trong _______ 11

Tìm hiểu thêm về cách hiểu danh sách trong phần Hiểu danh sách Python

ví dụ 2. Sử dụng Nested for Loops [cách không phải Pythonic]

my_list = [[1], [2, 3], [4, 5, 6, 7]]

flat_list = []
for sublist in my_list:
    for num in sublist:
        flat_list.append[num]

print[flat_list]

đầu ra

[1, 2, 3, 4, 5, 6, 7]
  • Tạo một danh sách trống
    [1, 2, 3, 4, 5, 6, 7]
    1
  • Truy cập từng phần tử của danh sách con bằng vòng lặp lồng nhau và nối phần tử đó vào
    [1, 2, 3, 4, 5, 6, 7]
    1

ví dụ 3. Sử dụng gói itertools

________số 8

đầu ra

[1, 2, 3, 4, 5, 6, 7]

Sử dụng mô-đun itertools, chúng ta có thể tạo một danh sách phẳng

  • Phương thức
    [1, 2, 3, 4, 5, 6, 7]
    4 từ mô-đun itertools trả về từng phần tử của mỗi lần lặp [i. e. danh sách phụ]
  • [1, 2, 3, 4, 5, 6, 7]
    5 chuyển đổi các giá trị được trả về đó thành một danh sách

Ví dụ 4. Sử dụng tổng[]

[1, 2, 3, 4, 5, 6, 7]
2

đầu ra

[1, 2, 3, 4, 5, 6, 7]
  • Cung cấp hai đối số cho phương thức
    [1, 2, 3, 4, 5, 6, 7]
    6.
    [1, 2, 3, 4, 5, 6, 7]
    0 và một danh sách trống [i. e.
    [1, 2, 3, 4, 5, 6, 7]
    8]
  • sum[] kết hợp
    [1, 2, 3, 4, 5, 6, 7]
    0 và
    [1, 2, 3, 4, 5, 6, 7]
    8 để tạo danh sách phẳng

Ví dụ 5. Sử dụng lambda và giảm[]

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

đầu ra

[1, 2, 3, 4, 5, 6, 7]

Trong ví dụ trên,

my_list = [[1], [2, 3], [4, 5, 6, 7]]

flat_list = []
for sublist in my_list:
    for num in sublist:
        flat_list.append[num]

print[flat_list]
1 áp dụng hàm lambda cho tất cả các phần tử của
[1, 2, 3, 4, 5, 6, 7]
0

Tìm hiểu thêm về các biểu thức lambda tại Python Anonymous/Lambda Function

Khả năng hiểu danh sách là một trong những tính năng quan trọng nhất của Python. Khả năng hiểu danh sách cung cấp một cách thông minh để tạo danh sách dựa trên danh sách hiện có. Cùng với việc tạo danh sách mới, khả năng hiểu danh sách có thể được sử dụng để lọc và ánh xạ các thành phần của danh sách. Thông thường, việc hiểu danh sách có dấu ngoặc và biểu thức, theo sau là vòng lặp for. Các câu lệnh if cũng được sử dụng bên trong các vòng lặp này

Khả năng hiểu danh sách luôn trả về một danh sách hoàn toàn mới cho người dùng.    

Danh sách lồng nhau là gì?

Danh sách lồng nhau không là gì ngoài nhiều danh sách trong một danh sách

cách vòng lặp

Mã số

[1, 2, 3, 4, 5, 6, 7]
3

đầu ra.  

[1, 2, 3, 4, 5, 6, 7]
4

Giải trình

Ở đây, một danh sách hai chiều bao gồm các phần tử [[3, 4, 5],[ 7, 8, 9, 10]] được gán cho một biến có tên là Nested_lists. Một biến gọi là flatten_list được khởi tạo với dấu ngoặc trống []. Sau đó, một vòng lặp for được sử dụng để lặp qua các phần tử của biến nested_lists. Một vòng lặp bên trong khác được sử dụng trong vòng lặp này, vì nó là danh sách hai chiều. Trong vòng lặp này, dòng flat_list. append[y] được sử dụng để nối thêm hoặc thêm tất cả các phần tử của danh sách vào flatten_list. Câu lệnh print[] in ra các phần tử của danh sách này

Do đó, đầu ra cuối cùng là

Làm phẳng danh sách. [3, 4, 5, 7, 8, 9, 10]

Liệt kê cách hiểu

[1, 2, 3, 4, 5, 6, 7]
5

đầu ra.  

[1, 2, 3, 4, 5, 6, 7]
4

Giải trình

Các phần tử [[3, 4, 5],[ 7, 8, 9, 10]] dùng để khởi tạo biến nested_lists. Dòng mã tiếp theo là y cho x trong nested_lists cho y trong x. Điều này được sử dụng để làm phẳng các thành phần danh sách của danh sách Nested_list. Dòng mã cuối cùng được sử dụng để in ra các phần tử của flat_list

Do đó, đầu ra cuối cùng là

Làm phẳng danh sách. [3, 4, 5, 7, 8, 9, 10]

itertools. hàm chain[]

[1, 2, 3, 4, 5, 6, 7]
7

đầu ra.  

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

Giải trình

Biến nested_list được khởi tạo với các phần tử [[1,2,3],[4,5,6], [7], [8,9]]. Trong dòng mã tiếp theo, câu lệnh nhập được sử dụng để tải mô-đun itertools. Sau đó, itertools. phương thức chain[] được sử dụng để làm phẳng danh sách trong biến nested_list. Dòng mã tiếp theo là

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

Ở đây, itertools. Phương thức chain[] lấy các phần tử của Nested_lists làm đối số. Biểu tượng * trước nested_lists xác định nhiều hoặc tất cả các phần tử của nó. Sau đó, kết quả của phương thức này được đưa vào phương thức list[] để chuyển đổi chuỗi thành danh sách. Kết quả cuối cùng của phương thức list[] được gán cho một biến gọi là listflat. Giá trị trong biến listflat được in ra ở dòng cuối cùng bằng phương thức print[]

kết quả cuối cùng là

Làm phẳng danh sách. [1, 2, 3, 4, 5, 6, 7, 8, 9]

itertools. chuỗi. from_iterable[]

[1, 2, 3, 4, 5, 6, 7]
0

đầu ra.  

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

Giải trình

Trong chương trình này, một biến có tên là nested_lists được gán giá trị là [[1,2,3],[4,5,6], [7], [8,9]]. Sau đó, mô-đun itertools được tải bằng câu lệnh nhập. itertools. chuỗi. phương thức from_iterable[] được sử dụng tiếp theo. Phương thức này nhận một đối số duy nhất có thể là một danh sách các danh sách. Vì vậy, các phần tử của nested_lists được chuyển thành đối số cho itertools. chuỗi. phương thức from_iterable[]. Kết quả của lệnh gọi hàm này được chuyển thành đối số cho phương thức list[] chuyển đổi chuỗi thành danh sách

Danh sách phẳng cuối cùng được in bằng mã print["Danh sách phẳng. ", danh sách phẳng]. Giá trị kết quả của biến listflat là [1, 2, 3, 4, 5, 6, 7, 8, 9].   

Sự kết luận

Cùng với các phương thức và danh sách tùy chỉnh, các kỹ thuật hiểu danh sách có thể được sử dụng cho các thao tác với tệp. Bạn có thể lọc các phần tử từ danh sách và cũng có thể tạo chuỗi. Trong khi tạo danh sách, các kỹ thuật hiểu danh sách nhanh hơn và hiệu quả hơn các hàm thông thường. Tuy nhiên, để làm cho mã dễ đọc hơn, hãy tránh viết các cách hiểu danh sách quá dài, chẳng hạn như các cách hiểu liên quan đến vòng lặp for trong một dòng.  

Chủ Đề