Computer >> Máy Tính >  >> Lập trình >> Python

Khả năng hiểu danh sách lồng nhau trong python

Danh sách lồng nhau là danh sách nằm trong danh sách. Python cung cấp các tính năng để xử lý danh sách lồng nhau một cách duyên dáng và áp dụng các hàm phổ biến để thao tác với danh sách lồng nhau. Trong bài viết này, chúng ta sẽ xem cách sử dụng tính năng hiểu danh sách để tạo và sử dụng danh sách lồng nhau trong python.

Tạo ma trận

Tạo ma trận liên quan đến việc tạo ra một loạt các hàng và cột. Chúng ta có thể sử dụng vòng lặp for để tạo các hàng và cột của ma trận bằng cách đặt một danh sách python với vòng lặp for bên trong một danh sách python khác với vòng lặp for.

Ví dụ

matrix = [[m for m in range(4)] for n in range(3)]
print(matrix)

Chạy đoạn mã trên cho chúng ta kết quả sau:

[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]

Lọc từ danh sách lồng nhau

Chúng ta có thể sử dụng tính năng lọc danh sách bằng cách sử dụng vòng lặp for trong danh sách con. Dưới đây chúng tôi có một danh sách 2 chiều với một lớp danh sách con bên trong một danh sách lớn hơn. Chúng tôi truy cập các phần tử có chọn lọc từ mỗi danh sách lồng nhau này. Bằng cách sử dụng một điều kiện bộ lọc.

Ví dụ

years = [['January', 'February', 'March'], ['April', 'May', 'June'], ['July', 'August', 'September'],['October','November','December']]
# Nested List comprehension with an if condition
years = [years for sublist in years for years in sublist if len(years) <= 5]
print(years)

Chạy đoạn mã trên cho chúng ta kết quả sau:

['March', 'April', 'May', 'June', 'July']

Làm phẳng các danh sách con lồng nhau

Chúng tôi cũng có thể lấy một danh sách lồng nhau và làm phẳng nó bằng cách tạo một danh sách duy nhất mà không có bất kỳ danh sách con nào bên trong nó.

Ví dụ

nested_list = [[1] ,[17, 19], [21,23,25], [32,35,37,39]]
# Nested List Comprehension to flatten a given 2-D matrix
flattened_list = [value for sublist in nested_list for value in sublist]
print(flattened_list)

Chạy đoạn mã trên cho chúng ta kết quả sau:

[1, 17, 19, 21, 23, 25, 32, 35, 37, 39]