Danh sách hiểu so với vòng lặp trong Python
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 làm mục của một danh sách. Điều đầu tiên xuất hiện trong tâm trí sẽ được sử dụng cho Loop.
Ví dụ 1: Lặp lại qua một chuỗi sử dụng cho vòng lặp
h_letters = []
for letter in 'human':
h_letters.append[letter]
print[h_letters]
Khi chúng tôi 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 danh sách hiểu. Danh sách hiểu là một cách thanh lịch để 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 toàn bộ danh sách.
Ví dụ 2: Lặp lại qua chuỗi bằng cách sử dụng danh sách hiểu
h_letters = [ letter for letter in 'human' ]
print[ h_letters]
Khi chúng tôi 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 danh sách hiểu. Danh sách hiểu là một cách thanh lịch để 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 toàn bộ danh sách.
[expression for item in list]
Ví dụ 2: Lặp lại qua chuỗi bằng cách sử dụng danh sách hiểu
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 'con người'. Chúng tôi gọi hàm
['h', 'u', 'm', 'a', 'n']8 để nhận đầu ra.
Cú pháp của danh sách hiểu
Bây giờ chúng ta có thể xác định nơi sử dụng toàn bộ danh sách.
Nếu bạn nhận thấy,
['h', 'u', 'm', 'a', 'n']7 là một chuỗi, không phải là một danh sách. Đây là sức mạnh của sự hiểu biết danh sách. Nó có thể xác định khi nào nó nhận được một chuỗi hoặc một tuple và hoạt động trên nó 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 biết danh sách. Nhưng khi bạn học và cảm thấy thoải mái với các toàn bộ danh sách, bạn sẽ thấy mình thay thế ngày càng nhiều vòng lặp bằng cú pháp thanh lịch này.
letters = list[map[lambda x: x, 'human']]
print[letters]
Liệt kê toàn diện so với các chức năng Lambda
['h','u','m','a','n']
Danh sách toàn diện không phải là cách duy nhất để làm việc trong danh sách. Các chức năng tích hợp khác nhau và các chức năng Lambda có thể tạo và sửa đổi danh sách trong các dòng mã ít hơn.
Ví dụ 3: Sử dụng các hàm Lambda bên trong danh sách
Khi chúng tôi chạy chương trình, đầu ra sẽ
Tuy nhiên, sự hiểu biết danh sách thường dễ đọc của con người hơn các chức năng Lambda. Nó dễ dàng hơn để hiểu những gì lập trình viên đã cố gắng thực hiện khi sử dụng toàn bộ danh sách.
number_list = [ x for x in range[20] if x % 2 == 0]
print[number_list]
Điều kiện trong danh sách hiểu
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Danh sách các hệ thống 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 nếu có danh sách hiểu
num_list = [y for y in range[100] if y % 2 == 0 if y % 5 == 0]
print[num_list]
Điều kiện trong danh sách hiểu
['h', 'u', 'm', 'a', 'n']0
Danh sách các hệ thống 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 nếu có danh sách hiểu
- Khi chúng tôi chạy chương trình trên, đầu ra sẽ là:
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 vật phẩm chia hết cho 2.
Ví dụ 5: Nested nếu có danh sách hiểu
['h', 'u', 'm', 'a', 'n']1
Điều kiện trong danh sách hiểu
['h', 'u', 'm', 'a', 'n']2
Danh sách các hệ thống 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 nếu có danh sách hiểu
Khi chúng tôi chạy chương trình trên, đầu ra sẽ là:
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 vật phẩm chia hết cho 2.
['h', 'u', 'm', 'a', 'n']3
Ví dụ 5: Nested nếu có danh sách hiểu
['h', 'u', 'm', 'a', 'n']4
Ở đây, danh sách kiểm tra hiểu biết:
Y có phải chia cho 2 hay không?
Y có phải chia 5 hay không?
['h', 'u', 'm', 'a', 'n']5
Điều kiện trong danh sách hiểu
['h', 'u', 'm', 'a', 'n']6
Danh sách các hệ thống 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 nếu có danh sách hiểu The nested loops in list comprehension don’t work like normal nested loops. In the above program,
h_letters = [ letter for letter in 'human' ]
print[ h_letters]
4 is executed
before h_letters = [ letter for letter in 'human' ]
print[ h_letters]
5. Hence at first, a value is assigned to i then item directed by h_letters = [ letter for letter in 'human' ]
print[ h_letters]
6 is appended in the transpose variable.Khi chúng tôi chạy chương trình trên, đầu ra sẽ là:
- 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 vật phẩm chia hết cho 2.
- Ví dụ 5: Nested nếu có danh sách hiểu
- Ở đây, danh sách kiểm tra hiểu biết:
- Y có phải chia cho 2 hay không?