Hàm lambda trong Python

Table of Content

Định nghĩa hàm lambda

Trong Python, một hàm vô danh là một hàm không có tên. Nhưng chúng ta đã biết rằng, từ khóa def được sử dụng để định nghĩa một hàm thông thường trong Python. Tương tự, từ khóa lambda dược sử dụng để định nghĩa một hàm vô danh trong Python. Nó có cú pháp như sau:

lambda arguments: expression
  • Hàm này có thể có nhiều đối số bất kỳ nhưng chỉ có một biểu thức được chạy và trả về.
  • Hàm lambda có thể được dùng ở bất cứ nơi nào mà một hàm được yêu cầu.
  • Bạn cần lưu ý rằng các hàm lambda bị giới hạn về mặt cú pháp với chỉ một biểu thức duy nhất.

Hãy xem ví dụ này và cố gắng hiểu sự khác biệt giữa một hàm thông thường được định nghĩa bằng def và hàm lambda. Đây là một chương trình trả về lập phương của một số:

def cube(y):
    return y*y*y

lambda_cube = lambda y: y*y*y

# sử dụng hàm thông thường
print(cube(5))

# sử dụng hàm lambda
print(lambda_cube(5))

Kết quả:

125
125

Sử dụng hàm lambda

Nhưng mục đích chính của hàm lambda là tạo ra và chạy chỉ một lần duy nhất, ta không thường gán nó cho một biến như ví dụ trên. Hàm lambda đặc biệt được sử dụng với các hàm tích hợp sẵn filter(), map()Reduce().

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

Hàm filter() trong Python nhận một hàm và một danh sách làm đối số. Nó lọc ra các phần tử của danh sách thỏa mãn điều kiện nào đó.

Ví dụ 1

li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]

final_list = list(filter(lambda x: (x%2 == 0), li))
print(final_list)

Kết quả:

[5, 7, 97, 77, 23, 73, 61]

Ví dụ 2

ages = [13, 90, 17, 59, 21, 60, 5]

adults = list(filter(lambda age: age > 18, ages))

print(adults)

Kết quả:

[90, 59, 21, 60]

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

Hàm map() trong Python nhận một hàm và một danh sách làm đối số. Hàm được gọi với một hàm lambda và danh sách và trả về một danh sách mới chứa tất cả các mục đã sửa đổi, được trả về bởi hàm lambda cho mỗi mục trong danh sách ban đầu.

Ví dụ 1

li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61] 

final_list = list(map(lambda x: x*2, li)) 
print(final_list) 

Kết quả:

[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]

Ví dụ 2

animals = ['dog', 'cat', 'parrot', 'rabbit']

uppered_animals = list(map(lambda animal: str.upper(animal), animals)) 

print(uppered_animals)

Kết quả:

['DOG', 'CAT', 'PARROT', 'RABBIT']

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

Hàm reduce() trong Python nhận một hàm và một danh sách làm đối số. Hàm reduce() nằm trong mô-đun functools.

Ví dụ 1

from functools import reduce
li = [5, 8, 10, 20, 50, 100]
sum = reduce((lambda x,y: x + y), li)
print(sum)

Kết quả:

193

Leave a Reply