Trong Python, map[] và filter[] là các hàm tích hợp được sử dụng để thực thi một hàm cho mọi giá trị trong danh sách. Cả hai hàm dựng sẵn đều thực thi hàm đã chỉ định với phần tử danh sách làm đối số. Cả chức năng bản đồ và bộ lọc đều trả về một danh sách. Chúng ta hãy xem xét từng chức năng
Cú pháp chung để sử dụng hàm map[] như sau
cú pháp
bản đồ[tên_hàm, thứ_tự_dữ_liệu]
Ở đây, hàm map chấp nhận hai đối số, đối số đầu tiên là chức năng sẽ được thực thi và đối số thứ hai là chuỗi các phần tử mà các chức năng đã chỉ định phải được thực thi
Những điểm cần lưu ý
- Đối số đầu tiên phải chỉ là tên hàm không có dấu ngoặc đơn
Hãy xem xét mã ví dụ sau
def square[num]:
return num ** 2
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
squares = list[map[square, numbers]]
print[squares]
Trong đoạn mã ví dụ trên, hàm square[] được thực thi lặp đi lặp lại chuyển mọi phần tử từ danh sách số. Cuối cùng, nó trả về danh sách tất cả các giá trị trả về
Khi chúng tôi chạy mã ví dụ trên, nó sẽ tạo ra kết quả sau
Cú pháp chung để sử dụng hàm filter[] như sau
cú pháp
bộ lọc [tên_hàm, thứ_tự_dữ_liệu]
Ở đây, hàm lọc chấp nhận hai đối số, đối số đầu tiên là hàm sẽ được thực thi và đối số thứ hai là chuỗi các phần tử mà các hàm được chỉ định phải được thực thi
Những điểm cần lưu ý
- Đối số đầu tiên phải là một hàm chỉ trả về giá trị boolean [Đúng hoặc Sai]
- Đối số đầu tiên phải chỉ là tên hàm không có dấu ngoặc đơn
- Hàm bộ lọc trả về một danh sách bao gồm các đối số được truyền cho hàm mà nó trả về True
Hãy xem xét mã ví dụ sau
def find_even[num]:
return num % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
Trong mã ví dụ trên, hàm find_even[ ] được thực thi lặp đi lặp lại chuyển mọi phần tử từ danh sách số. Cuối cùng, nó trả về danh sách chứa tất cả các đối số mà hàm trả về True
Khi chúng tôi chạy mã ví dụ trên, nó sẽ tạo ra kết quả sau
Hầu hết các lần biểu thức lambda được sử dụng với các hàm tích hợp map[] và filter[]. Chúng ta hãy xem một ví dụ về biểu thức lambda được sử dụng với các hàm tích hợp map[] và filter[]
Hàm lambda là một hàm ẩn danh với cú pháp
def square[x]:
return x**2
9. Biểu thức được thực thi trên các đối số và kết quả được trả về. Mỗi chức năng lambda bao gồm 3 phần- từ khóa lambda
- Một biến ràng buộc x
- Phần thân của biểu thức
Cú pháp — Biến đơn
Một ví dụ đơn giản.
sum_of_square = lambda x, y: x**2 + y**2
0 tương đương với định nghĩa hàm Python tiêu chuẩn như saudef square[x]:
return x**2
Các trường hợp sử dụng như
sum_of_square = lambda x, y: x**2 + y**2
1 sẽ cho kết quả như nhau trong cả hai trường hợpCú pháp — Nhiều biến
Ví dụ lấy tổng bình phương 2 biến
sum_of_square = lambda x, y: x**2 + y**2
Đặc trưng
Như có thể thấy trong các ví dụ trước, hàm lambda có các đặc điểm sau
- Nó được viết dưới dạng một dòng biểu thức
- Nó không chứa các câu lệnh trong phần thân
- Nó không hỗ trợ chú thích kiểu hoặc khai báo biến bổ sung
Tại sao & Khi nào nên sử dụng Hàm Lambda?
- Trong hầu hết các trường hợp, hàm lambda giảm số lượng dòng so với định nghĩa hàm Python thông thường bằng cách sử dụng từ khóa
sum_of_square = lambda x, y: x**2 + y**2
0 - Chúng rất hữu ích khi tạm thời cần một chức năng trong một khoảng thời gian ngắn, thường được sử dụng bên trong một chức năng khác, chẳng hạn như ________ 31 , ________ 32 , ________ 33 và ________ 34
1. Lọc
Hàm lọc có dạng
sum_of_square = lambda x, y: x**2 + y**2
5. Nó được sử dụng để lọc các phần tử thỏa mãn các điều kiện nhất định từ một đối tượng có thể lặp lại, chẳng hạn như danh sách và tập hợp. Đối số sum_of_square = lambda x, y: x**2 + y**2
6 thường được triển khai bằng hàm lambdadef find_even[num]:
return num % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
12. Bản đồ
Hàm map có định dạng tương tự như
sum_of_square = lambda x, y: x**2 + y**2
1 và được sử dụng để thực hiện thao tác thống nhất cho tất cả các phần tử trong một chuỗidef find_even[num]:
return num % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
33. Giảm
cú pháp.
sum_of_square = lambda x, y: x**2 + y**2
8Hàm
sum_of_square = lambda x, y: x**2 + y**2
4, giống như sum_of_square = lambda x, y: x**2 + y**2
2, cũng được sử dụng để thực hiện thao tác sum_of_square = lambda x, y: x**2 + y**2
6 trên mỗi phần tử trong def find_even[num]:
return num % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
12. Tuy nhiên, nó hoạt động hơi khác một chút ở chỗ thao tác được thực hiện giữa các phần tử, thay vì được thực hiện trên từng phần tử riêng biệtVí dụ:
sum_of_square = lambda x, y: x**2 + y**2
2 được sử dụng nếu bạn muốn nhân đôi từng phần tử, nhưng sum_of_square = lambda x, y: x**2 + y**2
4 được sử dụng nếu bạn muốn lấy tổng của tất cả các phần tử trong dãydef square[x]:
return x**2
14. Các trường hợp sử dụng khác
Ví dụ: nếu chúng tôi có một danh sách giá và khối lượng được lấy từ sổ đặt hàng như sau.
def find_even[num]:
return num % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
15 , mỗi phần tử trong danh sách đại diện cho một cặp giá-khối lượng. Để sắp xếp danh sách, chúng ta có thể sử dụng các hàm lambda để chỉ định khóa được sử dụng để sắp xếpdef square[x]:
return x**2
3Lưu ý cuối cùng
Bên trong, cả hai chức năng
def find_even[num]:
return num % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
16 và sum_of_square = lambda x, y: x**2 + y**2
0 đều hoạt động giống hệt nhau. Từ khóa def find_even[num]:
return num % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
18 hiển thị phiên bản mã byte Python có thể đọc được cho phép kiểm tra hướng dẫn. Đánh giá cả hai phiên bản của hàm def find_even[num]:
return num % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
19 được định nghĩa ở đầu bài viết nàydef square[x]:
return x**2
8Các quy trình được thực hiện bởi cả hai chức năng được quan sát là hoàn toàn giống nhau. Vì vậy, không có sự khác biệt thực sự trong cách họ thực hiện
Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter và LinkedIn. Kiểm tra Sự bất hòa trong cộng đồng của chúng tôi và tham gia Tập thể tài năng của chúng tôi