Các hàm map[], filter[] và reduce[] của Python thêm một chút lập trình chức năng vào ngôn ngữ. 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 giải pháp ngắn gọn và thanh lịch hơn cho một số vấn đề
map[], filter[], và reduce[] đều hoạt động theo cùng một cách. Các hàm này chấp nhận một hàm và một chuỗi các phần tử và trả về kết quả của việc áp dụng hàm nhận được cho từng phần tử trong chuỗi
hàm map[]
Giống như reduce[], hàm map[] cho phép bạn lặp qua từng mục trong một lần lặp. Mặt khác, Map[] hoạt động độc lập trên từng mục thay vì tạo ra một kết quả duy nhất
Cuối cùng, hàm map[] có thể được sử dụng để thực hiện các phép toán trên hai hoặc nhiều danh sách. Nó thậm chí có thể được sử dụng để thao tác với bất kỳ loại mảng nào
Độ phức tạp thời gian của hàm map[]= O[n]
cú pháp
map[function, iterable]
Thông số
chức năng - Chức năng được sử dụng trong mã
iterable - Đây là giá trị được lặp lại trong mã
Thuật toán [Các bước]
Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn –
Tạo một hàm có tên multiNumbers trả về kết quả phép nhân của số được truyền cho nó
Trả về số đã cho nhân với 3, bên trong hàm
Sử dụng hàm map[] để áp dụng hàm multiNumbers[] cho từng phần tử của danh sách bằng cách chuyển tên hàm và liệt kê dưới dạng đối số cho nó
In các mục danh sách kết quả sau khi nhân chúng với 3
Mã số
đầu ra
Khi thực thi, chương trình trên sẽ tạo đầu ra sau -
Multiplying list elements with 3: 3 9 15 6 18 30
chức năng bộ lọc[]
Hàm filter[] tạo một trình vòng lặp mới để lọc các phần tử từ phần tử đã tạo trước đó [như danh sách, bộ dữ liệu hoặc từ điển]
Hàm filter[] kiểm tra xem điều kiện đã cho có tồn tại trong chuỗi hay không rồi in kết quả
Độ phức tạp thời gian của hàm filter[] = O [n]
cú pháp
filter[function, iterable]
Thông số
chức năng - Chức năng được sử dụng trong mã
iterable - Đây là giá trị được lặp lại trong mã
Thuật toán [Các bước]
Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn –
Tạo một chức năng với tên voteAge trả về độ tuổi đủ điều kiện để bỏ phiếu từ danh sách
Sử dụng câu lệnh điều kiện if để kiểm tra xem số được truyền vào hàm có lớn hơn hoặc bằng 18 không
Nếu tuyên bố trên là đúng Trả lại số
Tạo một biến để lưu trữ danh sách đầu vào
Sử dụng hàm filter[] bằng cách chuyển tên hàm và nhập danh sách làm đối số cho hàm để lọc độ tuổi lớn hơn hoặc bằng 18 từ danh sách. Ở đây, nó áp dụng hàmvotingAge[] cho mọi thành phần của danh sách và kết quả chỉ lưu trữ các giá trị của danh sách được trả về bởi hàmvotingAge[][Ở đây hàmvotingAge[] trả về số nếu nó lớn hơn 18]
In đối tượng bộ lọc
Sử dụng hàm list[] [trả về danh sách có thể lặp lại], để chuyển đổi đối tượng bộ lọc ở trên thành danh sách và in nó
Thí dụ
đầu ra
Khi thực thi, chương trình trên sẽ tạo ra đầu ra sau -
Eligibility ages for voting from the input list: [20, 18, 25, 19]
giảm[]
Trong Python, hàm reduce[] lặp qua từng mục trong danh sách hoặc kiểu dữ liệu có thể lặp khác, trả về một giá trị. Nó nằm trong thư viện funcools. Điều này hiệu quả hơn vòng lặp
cú pháp
reduce[function, iterable]
Thông số
chức năng - Chức năng được sử dụng trong mã
iterable - Đây là giá trị được lặp lại trong mã
Thuật toán [Các bước]
Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn –
Sử dụng từ khóa import để nhập hàm reduce[] từ mô-đun funcools
Tạo một hàm có tên addNumbers[] trả về tổng của tất cả các mục trong danh sách
Tạo một biến để lưu trữ danh sách đầu vào
Sử dụng hàm reduce[], bỏ qua hàm addNumbers[] và nhập danh sách làm đối số để lấy tổng của tất cả các mục trong danh sách
Thí dụ
đầu ra
The sum of all list items: 52
Khi chúng ta chuyển hàm addNumbers[] và danh sách đầu vào làm đối số cho hàm reduce[], nó sẽ lấy hai phần tử của danh sách và tính tổng chúng để tạo thành một phần tử, sau đó lấy một phần tử danh sách khác và cộng lại để tạo thành một phần tử
Phần kết luận
Bài viết này đề cập đến các hàm map[], reduce[] và filter[], cũng như cú pháp và ví dụ của chúng