Hàm lambda là một hàm ẩn danh với cú pháp
sum_of_square = lambda x, y: x**2 + y**2
7. 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
8 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
9 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 điểm
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, các hàm lambda giảm số lượng dòng so với các đị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ư
sum_of_square = lambda x, y: x**2 + y**2
1 ,sum_of_square = lambda x, y: x**2 + y**2
2 ,sum_of_square = lambda x, y: x**2 + y**2
3 vàsum_of_square = lambda x, y: x**2 + y**2
4
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 lambdanumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_numbers = list[filter[lambda x: x % 2 == 0, numbers]]print[even_numbers]
>>> [2, 4, 6, 8, 10]
2. 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ỗisum_of_square = lambda x, y: x**2 + y**2
13. 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 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_numbers = list[filter[lambda x: x % 2 == 0, numbers]]print[even_numbers]2. 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ệt
>>> [2, 4, 6, 8, 10]
Ví 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ãysum_of_square = lambda x, y: x**2 + y**2
94. 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.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_numbers = list[filter[lambda x: x % 2 == 0, numbers]]print[even_numbers]5 , 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ếp
>>> [2, 4, 6, 8, 10]
sum_of_square = lambda x, y: x**2 + y**2
1Lưu ý cuối cùng
Bên trong, cả hai chức năng
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_numbers = list[filter[lambda x: x % 2 == 0, numbers]]print[even_numbers]6 và
>>> [2, 4, 6, 8, 10]
sum_of_square = lambda x, y: x**2 + y**2
0 đều hoạt động giống hệt nhau. Từ khóa numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_numbers = list[filter[lambda x: x % 2 == 0, numbers]]print[even_numbers]8 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
>>> [2, 4, 6, 8, 10]
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_numbers = list[filter[lambda x: x % 2 == 0, numbers]]print[even_numbers]9 được định nghĩa ở đầu bài viết này
>>> [2, 4, 6, 8, 10]
sum_of_square = lambda x, y: x**2 + y**2
6Cá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