Hàm Lambda của Python

Category: Python

Hàm Lambda Python là hàm ẩn danh có nghĩa là hàm không có tên. Như chúng ta đã biết, từ khóa def được sử dụng để định nghĩa một hàm bình thường trong Python. Tương tự, từ khóa lambda được sử dụng để định nghĩa một hàm ẩn danh trong Python

Trong ví dụ này, chúng tôi đã định nghĩa hàm lambda( upper ) để chuyển đổi một chuỗi thành chữ hoa bằng cách sử dụng upper() .

s1 = 'GeeksforGeeks'

s2 = lambda func: func.upper()
print(s2(s1))

Đầu ra

GEEKSFORGEEKS

Mã này định nghĩa một hàm lambda có tên s2 lấy một chuỗi làm đối số và chuyển đổi thành chữ hoa bằng phương thức. Sau đó, nó áp dụng hàm lambda này cho chuỗi 'GeeksforGeeks' và in kết quả.supper()

Hãy cùng khám phá hàm Lambda một cách chi tiết:

Cú pháp hàm Lambda của Python

Cú pháp: lambda đối số: biểu thức

  • lambda: Từ khóa để xác định hàm.

  • đối số: Danh sách các tham số đầu vào được phân tách bằng dấu phẩy (giống như trong một hàm thông thường).

  • biểu thức: Một biểu thức duy nhất được đánh giá và trả về.

Chúng ta hãy cùng xem một số ứng dụng thực tế của hàm lambda trong Python.

lambda với Kiểm tra điều kiện

Hàm lambda có thể bao gồm các điều kiện bằng cách sử dụng câu lệnh if.

Ví dụ:

# ví dụ: Kiểm tra xem một số là dương , âm hay là không
n = lambda x: "Positive" if x > 0 else "Negative" if x < 0 else "Zero"

print(n(5))   
print(n(-3))  
print(n(0))

Đầu ra:

Positive
Negative
Zero

Giải thích:

  • Hàm lambda lấy x làm đầu vào.

  • Nó sử dụng các câu lệnh if-else lồng nhau để trả về "Dương", "Âm" hoặc "Không".

Sự khác biệt giữa lambda và def từ khóa

lambda ngắn gọn nhưng kém mạnh hơn def khi xử lý logic phức tạp. Chúng ta hãy xem xét so sánh ngắn gọn giữa hai hàm:

Tính năng

lambda Chức năng

Hàm thường xuyên ( def)

Sự định nghĩa

Biểu thức đơn với  lambda .

Nhiều dòng mã.

Tên

Ẩn danh (hoặc nêu tên nếu được chỉ định).

Phải có tên.

Các tuyên bố

Chỉ có một biểu hiện duy nhất.

Có thể bao gồm nhiều câu lệnh.

Tài liệu

Không thể có docstring.

Có thể bao gồm chuỗi tài liệu.

Khả năng tái sử dụng

Phù hợp nhất cho các chức năng ngắn hạn, tạm thời.

Tốt hơn cho logic phức tạp và có thể tái sử dụng.

Ví dụ:

# sử dụng lambda
sq = lambda x: x ** 2
print(sq(3))

# sử dụng def
def sqdef(x):
    return x ** 2
print(sqdef(3))

Đầu ra

9 
9

Như chúng ta có thể thấy trong ví dụ trên, cả hàm sq() và hàm sqdef() đều hoạt động giống nhau và đúng như mong đợi.

Lambda với List Comprehension

Kết hợp lambda với danh sách cho phép chúng ta áp dụng các phép chuyển đổi vào dữ liệu theo cách ngắn gọn.

Ví dụ:

li = [lambda arg=x: arg * 10 for x in range(1, 5)]
for i in li:
    print(i())

Đầu ra:

10 
20 
30 
40

Giải thích:

  • Hàm lambda bình phương từng phần tử.

  • Danh sách hiểu lặp qua li và áp dụng lambda cho từng phần tử.

  • Điều này lý tưởng để áp dụng các phép biến đổi vào tập dữ liệu trong các tác vụ xử lý hoặc thao tác dữ liệu trước.

Lambda với if-else

Các hàm lambda có thể kết hợp trực tiếp logic có điều kiện, cho phép chúng ta xử lý việc ra quyết định đơn giản trong hàm.

Ví dụ:

# VÍ dụ: kiểm tra xem một số là chẵn hay lẻ
check = lambda x: "Even" if x % 2 == 0 else "Odd"

print(check(4))  
print(check(7))

Đầu ra:

Even
Odd

Giải thích:

  • Lambda kiểm tra xem một số có chia hết cho 2 hay không (x % 2 == 0).

  • Trả về "Even" nếu đúng và "Odd" nếu không.

  • Cách tiếp cận này hữu ích cho việc dán nhãn hoặc phân loại giá trị dựa trên các điều kiện đơn giản.

Lambda với nhiều câu lệnh

Hàm lambda không cho phép nhiều câu lệnh, tuy nhiên, chúng ta có thể tạo hai hàm lambda rồi gọi hàm lambda kia làm tham số cho hàm đầu tiên.

Ví dụ:

#ví dụ: thực hiện phép cộng và phép nhân trên một dòng
calc = lambda x, y: (x + y, x * y)

res = calc(3, 4)
print(res)

Đầu ra:

(7, 12)

Giải thích:

  • Hàm lambda thực hiện cả phép cộng và phép nhân và trả về một bộ kết quả gồm cả hai phép cộng và nhân.

  • Điều này hữu ích cho những trường hợp cần thực hiện nhiều phép tính và trả về cùng lúc.

Các hàm Lambda có thể được sử dụng cùng với các hàm tích hợp như filter() , map()reduce() .

Sử dụng lambda với filter()

Hàm filter() trong Python lấy một hàm và một danh sách làm đối số. Hàm này cung cấp một cách tinh tế để lọc ra tất cả các phần tử của một chuỗi "sequence", mà hàm trả về True.

Ví dụ:

# Ví dụ: Lọc một số chẵn từ danh sách
n = [1, 2, 3, 4, 5, 6]
even = filter(lambda x: x % 2 == 0, n)
print(list(even))

Đầu ra:

[2, 4, 6]

Giải thích:

  • Hàm lambda kiểm tra xem một số có phải là số chẵn hay không (x % 2 == 0).

  • filter() áp dụng điều kiện này cho từng phần tử trong nums.

Sử dụng lambda với map()

Hàm map() trong Python lấy một hàm và một danh sách làm đối số. Hàm được gọi bằng hàm lambda và một danh sách mới được trả về, trong đó chứa tất cả các mục đã sửa đổi lambda được hàm đó trả về cho mỗi mục.

Ví dụ: 

# ví dụ: nhân đôi mỗi số trong danh sách
a = [1, 2, 3, 4]
b = map(lambda x: x * 2, a)
print(list(b))

Đầu ra:

[2, 4, 6, 8]

Giải thích:

  • Hàm lambda nhân đôi mỗi số.

  • map() lặp qua a và áp dụng phép biến đổi.

Sử dụng lambda với reduce()

Hàm reduce() trong Python lấy một hàm và một danh sách làm đối số. Hàm được gọi bằng một hàm lambda và một iterable và một kết quả rút gọn mới được trả về. Thao tác này thực hiện một hoạt động lặp lại trên các cặp iterable. Hàm reduce() thuộc về mô-đun functools

Ví dụ:

from functools import reduce

# Ví dụ: tìm tích của tất cả số trong danh sách
a = [1, 2, 3, 4]
b = reduce(lambda x, y: x * y, a)
print(b)

Đầu ra

24

Giải thích:

  • Lambda nhân hai số cùng một lúc.

  • reduce() áp dụng thao tác này trên toàn bộ danh sách.

Published on Jun 17, 2025