Liệt kê các hiểu biết bằng Python

List Comprehensions Python



Danh sách dễ hiểu thường được sử dụng trong Python để viết các câu lệnh dòng đơn tạo danh sách hoặc từ điển mới bằng cách lặp qua một đối tượng có thể lặp lại. Bài viết này sẽ giải thích cách sử dụng khả năng hiểu danh sách trong Python, bắt đầu với giải thích cơ bản về cách hoạt động của vòng lặp for trong Python.

For Loop bằng Python

Câu lệnh vòng lặp for trong Python lặp lại tuần tự qua các thành viên của bất kỳ đối tượng, danh sách, chuỗi nào, v.v. So với các ngôn ngữ lập trình khác, cú pháp của nó rõ ràng hơn nhiều và không yêu cầu xác định các bước lặp và bắt đầu lặp theo cách thủ công. Mặc dù có nhiều cách để làm cho hành vi của nó giống với các ngôn ngữ lập trình khác (sẽ không được đề cập trong bài viết này). Bạn cũng có thể thực hiện một số kiểm soát đối với vòng lặp for bằng cách sử dụng các câu lệnh như continue, break, pass, v.v. Dưới đây là ví dụ đơn giản về vòng lặp for trong Python:







NStrong phạm vi(10):
in(NS)

Vòng lặp for ở trên sẽ in ra mười số bắt đầu từ 0 và kết thúc bằng 9.



Liệt kê toàn bộ

Khả năng hiểu danh sách không là gì ngoài cách viết ngắn gọn / ngắn gọn để viết nhiều dòng cho các vòng lặp trong một câu lệnh một dòng. Ví dụ hiểu danh sách dưới đây sẽ tạo một danh sách mới là [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] bằng cách bao gồm tất cả các giá trị của x trong đó.



con số= [NSNStrong phạm vi(10)]
in (con số)

Lưu ý rằng khả năng hiểu danh sách luôn tạo ra một danh sách mới và không sửa đổi các đoạn lặp ban đầu được sử dụng trong biểu thức. Một biểu thức hiểu danh sách điển hình phải có mệnh đề for và có thể được theo sau bởi các câu điều kiện if và else. Nếu không sử dụng khả năng hiểu danh sách, ví dụ trên sẽ được viết theo cách sau:





con số= []
NStrong phạm vi(10):
những con số.nối thêm(NS)

in (con số)

Hiệu suất và Khả năng đọc

Việc hiểu danh sách nhanh hơn vòng lặp for. Tuy nhiên, trừ khi bạn đang lặp lại hàng trăm nghìn mục, bạn sẽ không nhận thấy những cải tiến lớn về hiệu suất. Trong khi khả năng hiểu danh sách cung cấp một cách ngắn gọn để viết cho các vòng lặp, các biểu thức phức tạp có thể dẫn đến khả năng đọc mã kém và tăng độ dài. Điều quan trọng là phải giữ cho mã có thể đọc được, trừ khi đạt được hiệu suất tối đa là điều cần thiết tuyệt đối cho chương trình của bạn.

Ví dụ: Sử dụng cú pháp tổng hợp danh sách với từ điển và bộ

Từ điển python là tập hợp các phần tử được xác định theo cặp khóa-giá trị trong khi tập hợp là tập hợp các giá trị duy nhất không được phép trùng lặp. Danh sách dễ hiểu cũng có thể được sử dụng với các bộ và từ điển Python. Cú pháp hơi khác một chút, thay vì gói biểu thức trong dấu ngoặc vuông, bây giờ bạn sẽ phải sử dụng dấu ngoặc nhọn. Bạn cũng sẽ nhận được một từ điển / đối tượng tập hợp mới thay vì một danh sách mới.



dữ liệu= {'thành phố':'Newyork', 'Tên':'john doe'}

formatted_data= {k: v.chức vụ() đến,vtrongdữ liệu.mặt hàng()}

in (formatted_data)

Ví dụ trên sẽ chuyển đổi các giá trị chuỗi thành chữ hoa đầu đề và tạo một từ điển mới có tên là formatted_data, có kết quả đầu ra là: {‘city’: ‘New York’, ‘name’: ‘John ​​Doe’}. Bạn cũng có thể thay đổi từ điển / thiết lập tại chỗ bằng cách chỉ định biến từ điển hiện có ở phía bên trái.

dữ liệu= {'thành phố':'Newyork', 'Tên':'john doe'}

dữ liệu= {k: v.chức vụ() đến,vtrongdữ liệu.mặt hàng()}

in (dữ liệu)

Nếu không sử dụng tính năng hiểu từ điển, mã sẽ trông như thế này:

dữ liệu= {'thành phố':'Newyork', 'Tên':'john doe'}

formatted_data= {}

đến,vtrongdữ liệu.mặt hàng():
formatted_data[đến] =v.chức vụ()

in (formatted_data)

Vì không có cặp khóa-giá trị nào trong các tập hợp, một tập hợp có thể được xác định theo cách tương tự như hiểu danh sách. Sự khác biệt duy nhất là việc sử dụng các dấu ngoặc nhọn.

Ví dụ: Nhiều vòng lặp For trong việc hiểu danh sách

Ví dụ về khả năng hiểu danh sách được đề cập ở trên là cơ bản và sử dụng câu lệnh đơn for. Dưới đây là một ví dụ sử dụng nhiều vòng lặp for và câu lệnh if có điều kiện.

tính từ= ['Đĩa', 'Eoan', 'Tiêu điểm', 'Nghệ thuật']

loài vật= ['Dingo', 'Ermine', 'Cái hố', 'Hải ly']

tên mã= [x +''+ vàNStrongtính từtrongloài vậtnếu nhưvà.bắt đầu với(NS[0])]

in (tên mã)

Mã sẽ hiển thị [‘Disco Dingo’, ‘Eoan Ermine’, ‘Focal Fossa’] dưới dạng đầu ra. Hai vòng lặp for đi qua danh sách tính từ và động vật và các thành viên của chúng được nối với nhau bằng cách sử dụng một khoảng trắng, chỉ khi chữ cái đầu tiên của cả hai từ đều giống nhau. Nếu không sử dụng tính năng hiểu danh sách, mã sẽ trông như thế này:

tính từ= ['Đĩa', 'Eoan', 'Tiêu điểm', 'Nghệ thuật']
loài vật= ['Dingo', 'Ermine', 'Cái hố', 'Hải ly']

tên mã= []

NStrongtính từ:
trongloài vật:
nếu nhưvà.bắt đầu với(NS[0]):
tên mã.nối thêm(x +''+ và)

in (tên mã)

Ví dụ: Đọc hiểu danh sách với mệnh đề if-else

Ví dụ dưới đây sẽ cho thấy cách sử dụng các câu lệnh if và else trong phần hiểu danh sách.

number_list= [1, 2, 3, 4]
danh_sách_khác= [5, 6, 7, số 8]

kết quả= [Thật nếu như (x + y)%2 == 0 khác Sai NStrongnumber_listtrongdanh_sách_khác]

in (kết quả)

Trong khi lặp qua hai danh sách, việc hiểu danh sách ở trên sẽ kiểm tra xem tổng của cặp phần tử có chẵn hay không. Chạy đoạn mã trên sẽ hiển thị cho bạn [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] dưới dạng đầu ra. Nếu không sử dụng tính năng hiểu danh sách, mã sẽ trông như thế này:

number_list= [1, 2, 3, 4]
danh_sách_khác= [5, 6, 7, số 8]
kết quả= []

NStrongnumber_list:
trongdanh_sách_khác:
nếu như (x + y)%2 == 0:
kết quả.nối thêm(Thật)
khác:
kết quả.nối thêm(Sai)

in (kết quả)

Phần kết luận

Danh sách hiểu cung cấp một cách hay để viết các câu lệnh lặp ngắn gọn và rõ ràng. Tuy nhiên, chúng có thể nhanh chóng trở nên phức tạp và khó hiểu nếu sử dụng nhiều vòng lặp và câu lệnh điều kiện. Cuối cùng, nó nói đến mức độ thoải mái của một lập trình viên nhưng nhìn chung, bạn nên viết mã rõ ràng, dễ đọc và dễ gỡ lỗi thay vì sử dụng quá nhiều các phím tắt.