Giả sử, chúng tôi muốn tách các chữ cái của từ
['h', 'u', 'm', 'a', 'n']7 và thêm các chữ cái dưới dạng các mục của danh sách. Điều đầu tiên xuất hiện trong đầu là sử dụng vòng lặp for
ví dụ 1. Lặp qua một chuỗi Sử dụng for Loop
h_letters = []
for letter in 'human':
h_letters.append[letter]
print[h_letters]
Khi chúng ta chạy chương trình, đầu ra sẽ là
['h', 'u', 'm', 'a', 'n']
Tuy nhiên, Python có một cách dễ dàng hơn để giải quyết vấn đề này bằng cách sử dụng tính năng Hiểu danh sách. Hiểu danh sách là một cách tao nhã để xác định và tạo danh sách dựa trên danh sách hiện có
Hãy xem cách chương trình trên có thể được viết bằng cách sử dụng khả năng hiểu danh sách
ví dụ 2. Lặp lại qua một chuỗi bằng cách sử dụng tính năng hiểu danh sách
h_letters = [ letter for letter in 'human' ]
print[ h_letters]
Khi chúng ta chạy chương trình, đầu ra sẽ là
['h', 'u', 'm', 'a', 'n']
Trong ví dụ trên, một danh sách mới được gán cho biến h_letters và danh sách chứa các mục của chuỗi lặp 'human'. Chúng tôi gọi hàm
['h', 'u', 'm', 'a', 'n']8 để nhận đầu ra
Cú pháp hiểu danh sách
[expression for item in list]
Bây giờ chúng ta có thể xác định nơi sử dụng tính năng hiểu danh sách
Nếu bạn để ý,
['h', 'u', 'm', 'a', 'n']7 là một chuỗi, không phải một danh sách. Đây là sức mạnh của việc hiểu danh sách. Nó có thể xác định khi nào nó nhận được một chuỗi hoặc một bộ và hoạt động trên đó giống như một danh sách
Bạn có thể làm điều đó bằng cách sử dụng các vòng lặp. Tuy nhiên, không phải mọi vòng lặp đều có thể được viết lại dưới dạng hiểu danh sách. Nhưng khi bạn học và cảm thấy thoải mái với việc hiểu danh sách, bạn sẽ thấy mình ngày càng thay thế nhiều vòng lặp bằng cú pháp tao nhã này
Liệt kê khả năng hiểu so với chức năng Lambda
Hiểu danh sách không phải là cách duy nhất để làm việc trên danh sách. Nhiều hàm tích hợp sẵn và hàm lambda có thể tạo và sửa đổi danh sách với ít dòng mã hơn
ví dụ 3. Sử dụng các hàm Lambda bên trong Danh sách
________số 8_______Khi chúng ta chạy chương trình, đầu ra sẽ là
['h','u','m','a','n']
Tuy nhiên, khả năng hiểu danh sách thường dễ đọc hơn so với hàm lambda. Sẽ dễ hiểu hơn những gì lập trình viên đang cố gắng thực hiện khi sử dụng khả năng hiểu danh sách
Điều kiện trong danh sách hiểu
Khả năng hiểu danh sách có thể sử dụng câu lệnh có điều kiện để sửa đổi danh sách hiện có [hoặc các bộ dữ liệu khác]. Chúng tôi sẽ tạo danh sách sử dụng toán tử toán học, số nguyên và phạm vi []
Ví dụ 4. Sử dụng if với Danh sách hiểu
number_list = [ x for x in range[20] if x % 2 == 0]
print[number_list]
Khi chúng ta chạy chương trình trên, đầu ra sẽ là
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Danh sách, number_list, sẽ được điền bởi các mục trong phạm vi từ 0-19 nếu giá trị của mục đó chia hết cho 2
Ví dụ 5. IF lồng nhau với khả năng hiểu danh sách
num_list = [y for y in range[100] if y % 2 == 0 if y % 5 == 0]
print[num_list]
Khi chúng ta chạy chương trình trên, đầu ra sẽ là
['h', 'u', 'm', 'a', 'n']0
Ở đây, kiểm tra mức độ hiểu danh sách
- Y có chia hết cho 2 hay không?
- Y có chia hết cho 5 hay không?
Nếu y thỏa mãn cả hai điều kiện, y sẽ được thêm vào num_list
Ví dụ 6. nếu. khác với việc hiểu danh sách
['h', 'u', 'm', 'a', 'n']1
Khi chúng ta chạy chương trình trên, đầu ra sẽ là
['h', 'u', 'm', 'a', 'n']2
Ở đây phần đọc danh sách sẽ kiểm tra 10 số từ 0 đến 9. Nếu i chia hết cho 2, thì
h_letters = [ letter for letter in 'human' ]
print[ h_letters]
0 được thêm vào danh sách obj. Nếu không, h_letters = [ letter for letter in 'human' ]
print[ h_letters]
1 được thêm vàoCác vòng lặp lồng nhau trong việc hiểu danh sách
Giả sử, chúng ta cần tính toán chuyển vị của một ma trận yêu cầu vòng lặp for lồng nhau. Trước tiên hãy xem cách nó được thực hiện bằng cách sử dụng vòng lặp for bình thường
Ví dụ 7. Hoán đổi Ma trận bằng cách sử dụng Vòng lặp lồng nhau
['h', 'u', 'm', 'a', 'n']3
đầu ra
['h', 'u', 'm', 'a', 'n']4
Đoạn mã trên sử dụng hai vòng lặp for để tìm chuyển vị của ma trận
Chúng ta cũng có thể thực hiện phép lặp lồng nhau trong phần hiểu danh sách. Trong phần này, chúng ta sẽ tìm hiểu phép hoán vị của một ma trận bằng cách sử dụng vòng lặp lồng nhau bên trong khả năng hiểu danh sách
Ví dụ 8. Hoán đổi ma trận bằng cách sử dụng tính năng hiểu danh sách
['h', 'u', 'm', 'a', 'n']5
Khi chúng ta chạy chương trình trên, đầu ra sẽ là
['h', 'u', 'm', 'a', 'n']6
Trong chương trình trên, chúng ta có một ma trận biến có
h_letters = [ letter for letter in 'human' ]
print[ h_letters]
2 hàng và h_letters = [ letter for letter in 'human' ]
print[ h_letters]
3 cột. Chúng ta cần tìm chuyển vị của ma trận. Đối với điều đó, chúng tôi đã sử dụng hiểu danh sách**Ghi chú. Các vòng lặp lồng nhau trong phần hiểu danh sách không hoạt động như các vòng lặp lồng nhau thông thường. Trong chương trình trên,
h_letters = [ letter for letter in 'human' ]
print[ h_letters]
4 được thực thi trước h_letters = [ letter for letter in 'human' ]
print[ h_letters]
5. Do đó, lúc đầu, một giá trị được gán cho i sau đó mục được hướng dẫn bởi h_letters = [ letter for letter in 'human' ]
print[ h_letters]
6 được thêm vào biến chuyển vị