Python hiểu danh sách hải mã
Trong Hướng dẫn Python này, tôi chỉ cho bạn biểu thức gán mới còn được gọi là toán tử hải mã. Tính năng Python này là mới trong Python 3. 8. Nó có thể được sử dụng để đánh giá một biểu thức và đồng thời gán nó cho một biến. Điều này có thể hữu ích để đơn giản hóa mã trong một số trường hợp. Tôi sẽ chỉ cho bạn cú pháp của toán tử hải mã và hai ví dụ hữu ích Show Khả năng hiểu danh sách của Python (và trình tạo) là một tính năng tuyệt vời có thể đơn giản hóa đáng kể mã của bạn. Tuy nhiên, hầu hết thời gian, chúng tôi chỉ sử dụng chúng để viết một vòng lặp Chúng tôi biết rằng chúng tôi có thể sử dụng điều kiện Có thể xây dựng một điều kiện lồng nhau bằng cách sử dụng “biểu thức điều kiện” hay nó thường được gọi là toán tử bậc ba. Đó không hẳn là một giải pháp hay, vì vậy bạn sẽ phải quyết định xem một vài dòng đã lưu có xứng đáng với một câu nói khó chịu hay không Ngoài việc sử dụng các câu điều kiện phức tạp, bạn cũng có thể xếp chồng nhiều Nhìn vào mã mở rộng ở trên, viết nó theo cách này thực sự không có ý nghĩa lắm, nhưng cú pháp cho phép nó Một lý do tại sao bạn có thể muốn sử dụng nó là vì mục đích dễ đọc, như được hiển thị bên dưới Giả sử bạn hiểu gọi một hàm đắt tiền cả trong điều kiện và trong thân vòng lặp. Nó có thể trông giống như sau Điều này không hiệu quả vì nó làm tăng gấp đôi thời gian tính toán, nhưng chúng ta có thể làm gì với nó? Tôi muốn nhấn mạnh rằng ở trên không phải là vòng lặp kép. Trong ví dụ này, chúng tôi xây dựng một trình tạo bên trong khả năng hiểu danh sách được sử dụng bởi vòng lặp bên ngoài. Nếu bạn thấy điều này khó đọc, thì giải pháp thay thế sẽ là sử dụng toán tử hải mã. Đây là mã Ở đây Mặc dù khả năng hiểu danh sách thường được sử dụng cho các tác vụ đơn giản - chẳng hạn như gọi một hàm trên từng thành phần của danh sách - vẫn có những trường hợp ngoại lệ có thể được đưa vào trong khả năng hiểu. Tuy nhiên, không có cách riêng để xử lý một ngoại lệ trong phần hiểu danh sách, vậy chúng ta có thể làm gì với nó? Chúng ta cần một hàm xử lý để bắt một ngoại lệ bên trong một cách hiểu. Ở đây chúng ta tạo một hàm Đây không phải là một giải pháp lý tưởng, vì chúng tôi cần một hàm trợ giúp, nhưng đó là cách tốt nhất chúng tôi có thể làm như đề xuất ( PEP 463), đã cố gắng đưa ra một cú pháp cho điều này, đã bị từ chối Phá vỡ vòng lặpMột hạn chế khác của việc hiểu danh sách là không có khả năng Ví dụ đầu tiên ở trên sử dụng một tính năng/hành vi ít biết của hàm Điều này không dễ đọc lắm, vì vậy bạn có thể tận dụng lợi thế của mô-đun Như một lưu ý phụ - nếu bạn nghĩ rằng việc phá vỡ một vòng lặp trong việc hiểu danh sách là có thể, thì bạn đã đúng. Cho đến Python 3. 5, bạn có thể sử dụng hàm trợ giúp để nâng cao khả năng hiểu danh sách bên trong của Trong các phần trước, chúng ta đã thấy một số tính năng khó hiểu của việc hiểu danh sách có thể hữu ích hoặc không hữu ích trong việc viết mã hàng ngày. Vì vậy, bây giờ chúng ta hãy xem xét một số thủ thuật (và mẹo nhỏ) mà bạn có thể sử dụng ngay Mặc dù khả năng hiểu danh sách vanilla đơn giản rất mạnh mẽ, nhưng chúng thậm chí còn trở nên tốt hơn khi được kết hợp với các thư viện như Giả sử bạn cần tìm dãy số, ngày tháng, chữ cái, booleans liên tiếp hoặc bất kỳ đối tượng có thể sắp xếp nào khác. Bạn có thể giải quyết vấn đề này một cách tinh tế bằng cách ghép nối Ở đây chúng tôi có một danh sách các ngày, một số trong đó là liên tiếp. Chúng tôi chuyển các ngày cho hàm Tính toán tổng các số tích lũy rất dễ dàng trong Python — bạn chỉ cần chuyển một danh sách tới Với sự giúp đỡ của Như đã đề cập trước đó, toán tử hải mã new-ish có thể được sử dụng với khả năng hiểu danh sách để tạo biến cục bộ. Điều đó có thể hữu ích trong nhiều tình huống. Một tình huống như vậy là với các hàm Các hàm Cả Nhiều tính năng và thủ thuật thể hiện khả năng và giới hạn của việc hiểu danh sách. Học những điều phức tạp này - theo ý kiến của tôi - là một cách tốt để hiểu rõ hơn về các tính năng ngôn ngữ cụ thể, ngay cả khi nó không thực sự hữu ích trong viết mã hàng ngày. Trên hết, nó rất vui Như đã nói, tôi hy vọng bạn học được điều gì đó ở đây và lưu ý rằng nếu bạn quyết định sử dụng các điều kiện phức tạp hoặc ngắt vòng lặp khi hiểu danh sách của mình, đồng nghiệp của bạn có thể sẽ ghét bạn Tôi có nên sử dụng toán tử hải mã Python không?Toán tử hải mã tạo một biểu thức gán. Toán tử cho phép chúng ta gán giá trị cho biến bên trong biểu thức Python . Nó là một toán tử thuận tiện làm cho mã của chúng tôi gọn hơn. Chúng ta có thể gán và in một biến trong một lần.
Liệu Python 2. 7 có hiểu danh sách không?Tính năng hiểu danh sách, lối tắt để tạo danh sách, đã có trong Python kể từ phiên bản 2. 0. Trăn 2. 4 đã thêm một tính năng tương tự - biểu thức trình tạo; . 7 (và 3. 0) đã giới thiệu khả năng hiểu tập hợp và chính tả 2.7 (and 3.0) introduced set and dict comprehensions .
Khả năng hiểu danh sách có tốt hơn vòng lặp for không?Như chúng ta có thể thấy, vòng lặp for chậm hơn khả năng hiểu danh sách (9. 9 giây so với. số 8. 2 giây). Khả năng hiểu danh sách nhanh hơn vòng lặp for để tạo danh sách. Tuy nhiên, đây là vì chúng tôi đang tạo danh sách bằng cách thêm các phần tử mới vào danh sách đó ở mỗi lần lặp lại .
Toán tử hải mã có nhanh hơn không?Toán tử hải mã cung cấp một chút cải thiện về hiệu suất nhưng chủ yếu là một cách để viết mã ngắn gọn và dễ đọc hơn. |