Thay thế cho vòng lặp trong python
Đã bao giờ bạn tự hỏi tại sao một thứ đơn giản như vòng lặp For lại là quá đủ để giải quyết một vấn đề, nhưng chúng tôi bắt gặp một cách tiếp cận hoàn toàn khác và một đoạn mã phức tạp để triển khai nó. Điều này xảy ra với tôi mọi lúc và điều đó khiến tôi nghĩ tại sao một lập trình viên phải trải qua thời gian dài như vậy để thực hiện nó Show Tất nhiên, mỗi lập trình viên có một cách tiếp cận logic khác nhau đối với một vấn đề và có rất nhiều suy nghĩ và cân nhắc trong quá trình triển khai, điều này gây tò mò hơn và đôi khi thách thức để hiểu lý do logic đằng sau những triển khai đó Như đã nói, trong bài viết này, chúng ta sẽ khám phá một trường hợp sử dụng đơn giản và sẽ thực hiện các cách tiếp cận triển khai khác nhau cho cùng một vấn đề và hy vọng các lập trình viên sẽ suy luận ra cơ sở hợp lý trong việc triển khai một cách tiếp cận thay thế.
Xem xét ví dụ dưới đây chứa danh sách ứng dụng và tình trạng sức khỏe tương ứng của chúng. Chúng tôi phải phân tích cú pháp dữ liệu và nếu bất kỳ ứng dụng nào có trạng thái lỗi (Trạng thái không bằng 200) thì sẽ kích hoạt bản dựng cho hành động lỗi app_health = [ Cách tiếp cận “vòng lặp For” đơn giản Hãy triển khai bằng cách sử dụng vòng lặp for để lặp qua phần tử của danh sách và kiểm tra trạng thái của từng ứng dụng để tìm lỗi (Trạng thái không bằng 200 hoặc 201). Khi chúng ta quan tâm đến câu lệnh break xảy ra lỗi đầu tiên được sử dụng để thoát khỏi vòng lặp for for items in app_health: Giải pháp hoạt động hoàn toàn tốt, vì nó lặp lại qua từng phần tử và xác định lần đầu tiên xảy ra lỗi ứng dụng và kích hoạt hành động thích hợp cho lỗi ứng dụng, Trong trường hợp này, chúng tôi đang in tên của ứng dụng bị lỗi. Đầu ra của mã trên và việc sử dụng bộ nhớ được hiển thị bên dưới tintin_services.Application is down Phương pháp hiểu danh sáchCác giải pháp trên chỉ hoạt động tốt, Vì chúng tôi đang thực hiện việc này trong Python, nên cần có cách triển khai Pythonic. Danh sách hiểu đó là. Theo cách tiếp cận này, chúng tôi sẽ lặp lại từng phần tử trong danh sách “app_health” và trả về danh sách lỗi ứng dụng print(["{}.Application is down".format(items.get("app_name")) Các kết quả đầu ra của đoạn mã trên được trình bày dưới đây. Cách tiếp cận này thay vì trả về lần xuất hiện đầu tiên, nó đã trả về tất cả các lần xuất hiện lỗi và chúng tôi có thể kích hoạt lỗi ứng dụng trong trường hợp danh sách trả về có giá trị (độ dài của danh sách lớn hơn 0) Mặc dù không có bất kỳ sự khác biệt đáng chú ý nào trong việc sử dụng bộ nhớ, sự suy giảm hiệu suất rất có thể xảy ra trên quy mô lớn Phương pháp tiếp cận trình vòng lặp['tintin_services.Application is down', 'tintin_db.Application is down'] Python - Tiếp theo ()Hãy tinh chỉnh các giải pháp toàn diện trong danh sách trên để chỉ trả về lần xuất hiện lỗi đầu tiên. Làm thế nào để đạt được điều này? print(next("{}.Application is down".format(items.get("app_name"))
Vì vậy, bằng cách triển khai hàm next() lặp qua danh sách, “app_health” sẽ lặp cho đến khi tìm thấy lần xuất hiện đầu tiên và lợi thế lớn nhất là các vòng lặp sẽ không thực thi cho đến khi hàm next() được gọi lại. (lười đánh giá) Đầu ra và mức sử dụng bộ nhớ của đoạn mã trên được trình bày bên dưới. Chúng ta sẽ có thể thấy sự cải thiện đáng kể về hiệu suất với sự gia tăng kích thước của đầu vào tintin_services.Application is down Tóm tắtVẻ ngoài có thể đánh lừa đôi khi những thứ tưởng chừng đơn giản lại không hề đơn giản như vậy. Luôn tìm kiếm một phương pháp thay thế có thể hoạt động tốt hơn trên quy mô lớn - Hy vọng chúng ta có một số lý do tại sao lập trình viên thích các tùy chọn khác hơn là một phương pháp tiêu chuẩn. Xét cho cùng, lập trình viên chúng ta không điên như vẻ ngoài của nó (Một lần nữa vẻ ngoài có thể đánh lừa) Rất ít phương pháp thay thế để xem xét, có thể được sử dụng thay cho việc triển khai các vòng lặp cổ điển
print(list(filter(lambda x: x.get("status") not in [200, 201], app_health)))
Chúc bạn đọc vui vẻ…Cho đến lần sau Một ghi chú từ tiếng Anh thuần túyBạn có biết rằng chúng tôi đã ra mắt một kênh YouTube không? . Hãy xem chúng tôi bằng cách nhấp vào đây và nhớ đăng ký kênh nhé 😎 Sự thay thế cho vòng lặp là gì?Sử dụng map() thay vì vòng lặp for().
Bản đồ có nhanh hơn vòng lặp for Python không?Vì map() được viết bằng C và được tối ưu hóa cao nên vòng lặp ngụ ý bên trong của nó có thể hiệu quả hơn vòng lặp for Python thông thường . Đây là một lợi thế của việc sử dụng map(). Ưu điểm thứ hai của việc sử dụng map() liên quan đến mức tiêu thụ bộ nhớ. Với vòng lặp for, bạn cần lưu trữ toàn bộ danh sách trong bộ nhớ hệ thống của mình.
3 loại vòng lặp trong Python là gì?Loại vòng lặp . cho vòng lặp. Vòng lặp for trong Python được sử dụng để lặp qua một chuỗi (danh sách, bộ dữ liệu, bộ, từ điển và chuỗi). Sơ đồ. . Trong khi lặp lại. Vòng lặp while được sử dụng để thực thi một tập hợp các câu lệnh miễn là một điều kiện là đúng. . Vòng lặp lồng nhau. Nếu một vòng lặp tồn tại bên trong phần thân của một vòng lặp khác, nó được gọi là vòng lặp lồng nhau Cái nào nhanh hơn vòng lặp for?Hiểu danh sách nhanh hơn vòng lặp for để tạo danh sách. Tuy nhiên, điều này là do 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. |