1
Khi nào nên sử dụng hàm lambda trong Python?
0
Hoàng Anh30 đã đăng:

Trong lập trình Python, cho mình hỏi khi nào thì nên sử dụng hàm lambda thay vì hàm số bình thường là hợp lý nhất?

thêm bình luận...
2
xuans2huy510 đã đăng:

Vậy thì chúng ta nên xem xét hàm lambda sinh ra để làm gì? Đa số trong các ngôn ngữ lập trình, hàm lambda được tạo ra để biểu diễn các hàm số đơn giản một cách ngắn gọn hơn, vì muốn biểu diễn ngắn gọn một hàm số đơn giản cho nên khả năng của hàm lambda cũng rất hạn chế, đối với những hàm số phức tạp, bạn không thể sử dụng hàm lambda để biểu diễn được.

Những trường hợp nên sử dụng hàm lambda trong Python:

Trả về một hàm số trong một hàm số (thuật ngữ tiếng Anh gọi là Closure)

Ví dụ chương trình trả về hàm số tăng từ số ban đầu sử dụng lambda theo Docs Python là,

def ham_tang(n):
    return lambda x: x + n

f = ham_tang(10)

f(0) = 10
f(1) = 11
f(2) = 12

Nếu bạn viết ham_tang trên mà sử dụng hàm bình thường thì sẽ dài dòng hơn khi dùng hai hàm lồng vào nhau hoặc khối lượng tham số truyền vào nhiều hơn, ví dụ trên mình có thể viết lại bình thường như sau,

def ham_tang(x, n):
    return x + n

ham_tang(10, 0)  # = 10
ham_tang(10, 1)  # = 11
ham_tang(10, 2)  # = 12

Có thể dùng hàm lambda làm key để lọc, lấy hoặc tính toán các phần tử thỏa mãn một điều kiện nào đó trong các cấu trúc list, dict, ...

Ví dụ chỉ lấy ra các phần tử chẵn và lớn hơn 3 của mảng,

result = filter(lambda x: x % 2 == 0 and x > 3, [5, 2, 6, 4, 1, 9, 7])
print result  # = [6, 4]

Và tất nhiên có thể sử dụng hàm lambda để biểu diễn những hàm số nhỏ và đơn giản khác nếu như bạn muốn.

Ví dụ hàm số bình phương một số,

# Hàm bình thường
def binh_phuong(a):
    return a**2
print binh_phuong(3) # = 9

# Hàm sử dụng lambda
f = lambda x: x**2
print f(3) # = 9

f(3) == binh_phuong(3) # True
đã bổ sung 5.9 năm trước bởi
Avatar: Tèo Em Tèo Em60
Nha Trang
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)