Sự khác biệt giữa bản đồ và bộ lọc trong Python là gì?
Các hàm 8, 9 và 0 mang lại một chút lập trình hàm cho Python. Cả ba hàm này đều là các hàm tiện lợi có thể được thay thế bằng các vòng lặp hoặc Hiểu danh sách, nhưng cung cấp một cách tiếp cận ngắn gọn và thanh lịch hơn cho một số vấn đề Show Trước khi tiếp tục, chúng ta sẽ điểm qua một số điều bạn nên làm quen trước khi đọc về các phương pháp nói trên
Một phương thức ẩn danh là một phương thức không có tên, tôi. e. không bị ràng buộc với một mã định danh như khi chúng ta định nghĩa một phương thức bằng cách sử dụng 1Ghi chú. Mặc dù hầu hết mọi người sử dụng thuật ngữ "hàm ẩn danh" và "hàm lambda" thay thế cho nhau - chúng không giống nhau. Lỗi này xảy ra bởi vì trong hầu hết các ngôn ngữ lập trình, lambda đều ẩn danh và tất cả các hàm ẩn danh đều là lambda. Đây cũng là trường hợp trong Python. Vì vậy, chúng ta sẽ không đi sâu vào sự khác biệt này trong bài viết này.
Hãy nghĩ về lambdas như các phương thức một dòng không có tên. Ví dụ, chúng hoạt động giống như bất kỳ phương thức nào khác trong Python
Có thể được dịch sang
Lambda khác với các phương thức Python thông thường vì chúng chỉ có thể có một biểu thức, không thể chứa bất kỳ câu lệnh nào và kiểu trả về của chúng là đối tượng 2. Vì vậy, dòng mã trên không trả về chính xác giá trị 3 mà là hàm tính toán 3
Cả ba phương thức này đều mong đợi một đối tượng 2 làm đối số đầu tiên. Đối tượng 2 này có thể là một phương thức được xác định trước với một tên (như 50)Mặc dù, thường xuyên hơn không, các hàm được truyền cho 8, 9 và 0 là những hàm bạn chỉ sử dụng một lần, do đó, thường không có ích gì khi xác định hàm có thể tham chiếuĐể tránh xác định một chức năng mới cho các nhu cầu khác nhau của bạn về 8/ 9/ 0 - một giải pháp tinh tế hơn sẽ là sử dụng một chức năng ẩn danh, dùng một lần, ngắn mà bạn sẽ chỉ sử dụng một lần và không bao giờ sử dụng lại - lambdaHàm map()Hàm 8 lặp qua tất cả các mục trong iterable đã cho và thực thi 2 mà chúng tôi đã chuyển làm đối số cho từng mụcCú pháp là 5Chúng ta có thể truyền bao nhiêu đối tượng có thể lặp tùy ý sau khi truyền 2 mà chúng ta muốn sử dụngMã này sẽ dẫn đến 6Như chúng ta có thể thấy, chúng ta đã kết thúc với một danh sách mới trong đó hàm 60 được đánh giá cho từng phần tử trong danh sách 61. Kết quả của chức năng này đã được thêm vào danh sách một cách tuần tựMột cách hay hơn để làm điều tương tự chính xác này là sử dụng lambdas 9Chúng tôi nhận được cùng một đầu ra 6Ghi chú. Bạn có thể nhận thấy rằng chúng tôi đã truyền 62 vào một danh sách để in giá trị của từng phần tử. Chúng tôi đã làm điều này bởi vì gọi 63 trong danh sách sẽ in các giá trị thực của các phần tử. Thay vào đó, gọi 63 trên 62 sẽ in địa chỉ bộ nhớ của các giá trịHàm 8 trả về loại 62, có thể lặp lại và chúng tôi cũng có thể in kết quả như thế này 7Thay vào đó, nếu bạn muốn hàm 8 trả về một danh sách, bạn có thể truyền nó khi gọi hàmHãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó 9Chức năng bộ lọc ()Tương tự như 8, 9 lấy một đối tượng 2 và một iterable và tạo một danh sách mớiNhư tên gợi ý, 9 tạo thành một danh sách mới chỉ chứa các phần tử thỏa mãn một điều kiện nhất định, i. e. các 2 chúng tôi đã thông qua trả về 94Cú pháp là 6Sử dụng ví dụ trước, chúng ta có thể thấy rằng danh sách mới sẽ chỉ chứa các phần tử mà hàm 60 trả về 94Chạy mã này sẽ dẫn đến một danh sách ngắn hơn 0Hoặc, viết lại bằng lambda 1In ấn cho chúng ta cùng một đầu ra 0Hàm giảm () 0 hoạt động khác với 8 và 9. Nó không trả về một danh sách mới dựa trên 2 và có thể lặp lại mà chúng tôi đã thông qua. Thay vào đó, nó trả về một giá trị duy nhấtNgoài ra, trong Python 3, 0 không còn là hàm tích hợp nữa và có thể tìm thấy hàm này trong mô-đun 62Cú pháp là 3 0 hoạt động bằng cách gọi 2 mà chúng tôi đã chuyển cho hai mục đầu tiên trong chuỗi. Kết quả trả về bởi 2 được sử dụng trong một lệnh gọi khác tới 2 cùng với phần tử tiếp theo (thứ ba trong trường hợp này),Quá trình này lặp lại cho đến khi chúng tôi đi qua tất cả các phần tử trong chuỗi Đối số tùy chọn 67 được sử dụng, khi có mặt, ở đầu "vòng lặp" này với phần tử đầu tiên trong lệnh gọi đầu tiên tới 2. Theo một cách nào đó, phần tử 67 là phần tử thứ 0, trước phần tử đầu tiên, khi được cung cấp 0 khó hiểu hơn một chút so với 8 và 9, vì vậy hãy xem ví dụ từng bước
Sự khác biệt duy nhất, nếu chúng tôi đã đưa ra một giá trị 67 sẽ là một bước bổ sung - 1. 5. trong đó 0 sẽ gọi 64 và sử dụng giá trị trả về đó trong bước 2Hãy tiếp tục và sử dụng hàm 0 4Chạy mã này sẽ mang lại 5Một lần nữa, điều này có thể được viết bằng lambdas 6Và mã sẽ dẫn đến 7Phần kết luậnNhư đã đề cập trước đây, các chức năng này là chức năng tiện lợi. Chúng ở đó để bạn có thể tránh viết mã rườm rà hơn, nhưng tránh sử dụng quá nhiều cả chúng và biểu thức lambda Đừng ép buộc những công cụ này bởi vì "bạn có thể", vì nó thường có thể dẫn đến mã không đọc được và khó bảo trì. Chỉ sử dụng chúng khi hoàn toàn rõ ràng điều gì đang xảy ra ngay khi bạn nhìn vào hàm hoặc biểu thức lambda Nếu bạn thấy mình đang vật lộn để khớp logic cần thiết vào một hàm 8 hoặc một biểu thức lambda, thì tốt hơn hết là bạn chỉ nên viết một phương thức vòng lặp/xác định dài hơn một chút và tránh nhầm lẫn không cần thiết sau này
Sự khác biệt giữa bộ lọc và bản đồ là gì?Bản đồ. trả về một mảng các mẩu thông tin từ mảng ban đầu. Trong hàm gọi lại, trả về dữ liệu bạn muốn là một phần của mảng mới. Lọc. trả về một tập hợp con của mảng ban đầu dựa trên tiêu chí tùy chỉnh
Sự khác biệt giữa bản đồ () và bộ lọc () trong Python là gì?Bản đồ(). Thực hiện thao tác tương tự trên tất cả các phần tử trong một lần lặp. Một ví dụ đang thực hiện chuyển đổi nhật ký trên từng phần tử. Lọc(). Lọc một tập hợp con các phần tử đáp ứng (các) điều kiện nhất định. Một ví dụ là lọc ra các câu có chứa một chuỗi cụ thể
Sự khác biệt giữa bản đồ bộ lọc và giảm trong Python là gì?reduce() hoạt động khác với map() và filter(). Nó không trả về một danh sách mới dựa trên chức năng và khả năng lặp lại mà chúng tôi đã thông qua. Thay vào đó, nó trả về một giá trị duy nhất. Ngoài ra, trong Python 3, reduce() không còn là hàm tích hợp nữa và có thể tìm thấy hàm này trong mô-đun funcools
Sự khác biệt giữa bộ lọc và giảm bản đồ là gì?Hàm reduce() của Python không trả về một chuỗi mới như map() và filter(). Thay vào đó, nó trả về một giá trị duy nhất . Cú pháp tương tự như hai hàm còn lại. reduce() áp dụng hàm cho các phần tử của dãy, từ trái sang phải, bắt đầu với hai phần tử đầu tiên của dãy. |