Trong Python, hàm lambda là một loại hàm ẩn danh (không có tên). Nếu như ta dùng từ khóa def
để khai báo một hàm thông thường, thì với hàm lambda, ta sử dụng từ khóa lambda
để định nghĩa một hàm ngắn gọn và đơn giản.
Ví dụ dưới đây minh họa cách dùng lambda để chuyển đổi một chuỗi thành chữ in hoa bằng phương thức upper()
:
s1 = 'GeeksforGeeks' s2 = lambda func: func.upper() print(s2(s1))
Kết quả đầu ra:
GEEKSFORGEEKS
Hàm s2
được định nghĩa bằng lambda
, nhận vào một chuỗi và chuyển đổi nó thành chữ in hoa. Sau đó, ta truyền chuỗi 'GeeksforGeeks'
vào và in kết quả.
Cú pháp của Hàm Lambda trong Python
Cấu trúc:
lambda arguments: expression
lambda
: Từ khóa khai báo hàm lambda.arguments
: Các tham số đầu vào (giống như hàm bình thường).expression
: Biểu thức trả về giá trị của hàm.
Ví dụ đơn giản:
square = lambda x: x ** 2 print(square(5)) # Kết quả: 25
Ứng Dụng Thực Tế Của Hàm Lambda
1. Hàm Lambda với Điều Kiện (if-else)
Hàm lambda có thể xử lý điều kiện bằng cách sử dụng if-else
ngay trong biểu thức.
n = lambda x: "Dương" if x > 0 else "Âm" if x < 0 else "Không" print(n(5)) # Dương print(n(-3)) # Âm print(n(0)) # Không
So Sánh Hàm lambda
và Hàm Thông Thường (def
)
Đặc điểm | Hàm Lambda | Hàm def |
---|---|---|
Định nghĩa | Ngắn gọn, chỉ có một dòng | Có thể nhiều dòng |
Tên | Ẩn danh (hoặc có tên nếu gán vào biến) | Cần có tên |
Chứa nhiều câu lệnh | Không | Có thể có nhiều câu lệnh |
Tài liệu (docstring ) | Không thể có | Có thể có |
Ví dụ so sánh:
# Dùng lambda sq = lambda x: x ** 2 print(sq(3)) # Kết quả: 9 # Dùng def def sqdef(x): return x ** 2 print(sqdef(3)) # Kết quả: 9
2. Hàm Lambda Kết Hợp với List Comprehension
li = [lambda x=x: x * 10 for x in range(1, 5)] for i in li: print(i())
Kết quả:
10 20 30 40
3. Hàm Lambda với if-else
check = lambda x: "Chẵn" if x % 2 == 0 else "Lẻ" print(check(4)) # Chẵn print(check(7)) # Lẻ
4. Hàm Lambda Kết Hợp Nhiều Phép Toán
Mặc dù hàm lambda chỉ chứa một biểu thức, ta có thể trả về nhiều giá trị cùng lúc bằng cách sử dụng tuple.
calc = lambda x, y: (x + y, x * y) res = calc(3, 4) print(res) # (7, 12)
5. Kết Hợp Hàm Lambda với Các Hàm filter()
, map()
, reduce()
a) Dùng filter()
để lọc danh sách
nums = [1, 2, 3, 4, 5, 6] even_nums = list(filter(lambda x: x % 2 == 0, nums)) print(even_nums) # [2, 4, 6]
b) Dùng map()
để biến đổi danh sách
nums = [1, 2, 3, 4] double_nums = list(map(lambda x: x * 2, nums)) print(double_nums) # [2, 4, 6, 8]
c) Dùng reduce()
để tính toán trên danh sách
from functools import reduce nums = [1, 2, 3, 4] product = reduce(lambda x, y: x * y, nums) print(product) # 24
Tổng Kết
- Hàm lambda là một công cụ hữu ích giúp viết code ngắn gọn và nhanh chóng trong Python.
- Có thể dùng lambda trong điều kiện, kết hợp với các hàm như
filter()
,map()
,reduce()
, hoặc dùng trong list comprehension. - Khi cần xử lý logic phức tạp hơn, ta nên dùng hàm thông thường (
def
) thay vì lambda.