Hướng dẫn lambda trong python

Chào các bạn trong bài viết này, mình sẽ giới thiệu với các bạn về Lambda Function còn được gọi là các hàm ẩn danh.Mình sẽ giải thích cho các bạn hiểu về khái niệm của chúng là gì, cú pháp và cách xử dụng của chúng. Các bạn cùng tìm hiểu trong bài viết của mình nhé!

Khái niệm Lambda Function[hàm ẩn danh] trong Python

Trong Python, một hàm ẩn danh là một hàm được định nghĩa mà không có tên. Trong khi các hàm bình thường sẽ được định nghĩa bằng các từ khóa def trong Python, thì các hàm ẩn danh sẽ được định nghĩa bằng từ khóa lambda. Vì vậy các hàm ẩn danh còn được gọi là các Lambda Function.

Làm cách nào xử dụng Lambda Function trong Python?

Một lambda function trong Python sẽ có cú pháp như sau:

Cú pháp của Lambda Function trong python

lambda arguments: expression

Các hàm lambda có thể có bất kỳ số đối số nào nhưng chỉ có một biểu thức. Biểu thức được đánh giá và trả về. Các lambda function có thể được sử dụng ở bất cứ chỗ nào yêu cầu các đối tượng hàm.

Ví dụ về Lambda Function trong python

Dưới đây là một ví dụ về lambda function để xử lý việc tăng gấp đôi giá trị đầu vào:

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print[double[5]]

Kết quả:

10

Ở ví dụ trên lambda x: x * 2 sẽ là hàm lamba. Ở đây x là đối số vào x*2 là biểu thức được đánh giá và trả về.

Function này sẽ không có tên. Nó trả về một object được định danh là double. Giờ thì chúng ta có thể gọi nó như một hàm bình thường. Ví dụ:

double = lambda x: x * 2

Nó sẽ tương tự như các khai báo function như sau:

def double[x]:
   return x * 2

Xử dụng Lambda Function trong Python

Chúng ta thường sử dụng lambda function khi mà cần một hàm không tên trong một khoảng thời gian ngắn.

Trong Python, chúng ta thường sử dụng lambda function làm đối số cho một hàm bậc cao hơn [một hàm mà có thể nhận các hàm khác làm đối số]. Lambda function thường được sử dụng cùng với các hàm tích hợp sẵn như filter[], map[]...

Ví dụ khi xử dụng Lambda Function với Filter[]

Hàm filter[] 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 tất cả các items trong danh sách và một i danh sách mới được trả về chứa các items mà hàm đánh giá là True.

Đây là một ví dụ sử dụng hàm filter[] để chỉ lọc ra các số chẵn từ danh sách.

my_list = [1, 5, 4, 6, 8, 11, 3, 12]

new_list = list[filter[lambda x: [x%2 == 0] , my_list]]

print[new_list]

Kết quả:

[4, 6, 8, 12]

Ví dụ khi xử dụng Lambda Function với map[]

Hàm map[] trong Python nhận một hàm và một danh sách.

Hàm được gọi với tất cả các items trong danh sách và một danh sách mới được trả về chứa các item được hàm đó for each cho từng item. Đây là một ví dụ sử dụng hàm map[] để nhân đôi tất cả các mục trong một danh sách.

my_list = [1, 5, 4, 6, 8, 11, 3, 12]

new_list = list[map[lambda x: x * 2 , my_list]]

print[new_list]

Kết quả:

[2, 10, 8, 12, 16, 22, 6, 24]

Ưu điểm

Ưu điểm khi sử dụng Lambda Function theo tìm hiểu các nhân mình thấy thì nó sẽ viết khá ngắn gọn. Tối ưu khi viết Code là rất tốt. Rất tối ưu khi cần xử lý logic trong một chỗ nhất định trong 1 khoảng thời gian ngắn

Nhược điểm

Ưu điểm khi sử dụng Lambda Function theo mình thì sẽ rất khó cho việc debugmaintenance.

Kết Luận

Dưới đây mình đã giới thiệu với các bạn về Lambda Function khái niệm, các xử dụng và một số ví dụ sử dụng Lambda Function trong Python. Hi vọng các bạn thích bài viết này. Nếu có bất kì thắc mắc gì hãy để lại comment ở phía dưới nhé.

Tham Khảo chi tiết hơn

//www.programiz.com/python-programming/anonymous-function

Biểu thức Lambda

Biểu thức Lambda được sử dụng lý tưởng nhất khi lập trình viên cần làm một việc gì đó đơn giản. Việc hoàn thành công việc đó một cách nhanh chóng được chú trọng hơn là việc đặt tên một cách chính thức cho hàm. Biểu thức Lambda trong Python còn được gọi là hàm ẩn danh. Nói cách khác đây một cách ngắn gọn để khai báo các hàm nhỏ và ẩn danh [không cần thiết phải phải đặt tên cho các hàm Lambda]. Hàm Lambda không có khả năng tái sử dụng.

Các hàm lambda hoạt động giống như các hàm thông thường được khai báo bằng từ khóa def. Chúng rất hữu ích khi bạn muốn xác định một hàm nhỏ theo cách ngắn gọn. Hàm Lambda chỉ có thể chứa một biểu thức, vì vậy chúng không phù hợp cho các hàm có câu lệnh luồng điều khiển. Lưu ý: Hàm Lambda chỉ tồn tại trong phạm vi biến mà nó được định nghĩa, nếu biến đó vượt ra khỏi phạm vi thì nó sẽ không còn tác dụng nữa.

>>> Xem thêm bài viết: API trong Python- Hướng dẫn sử dụng API cho người mới bắt đầu

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

Cú pháp hàm Lambda trong Python

lambda đối số: biểu thức

Các hàm lambda có thể có nhiều đối số nhưng chỉ có một biểu thức.

Ví dụ 

# Sử dụng Lambda để tính bình phương của một số

square = lambda x: x ** 2

print[square[3]] # Output: 9

# Sử dụng hàm truyền thống để tính bình phương của một số

def square1[num]:

  return num ** 2

print[square[5]] # Output: 25

Trong ví dụ lambda ở trên, lambda x: x ** 2 đã tạo ra một đối tượng hàm ẩn danh có thể được liên kết với bất kỳ tên nào. Vì vậy, ở ví dụ tên ta đã liên kết đối tượng hàm với square. Vì vậy, từ bây giờ chúng ta có thể gọi đối tượng square giống như bất kỳ hàm truyền thống nào, chẳng hạn square[10]

>>> Tham khảo: Khóa học lập trình Python

Sử dụng hàm Lambda với filter []

Hàm filter[] trong Python lọc ra các phần tử theo điều kiện của hàm func từ list, dict... Hàm này sẽ chỉ trả về những giá trị mà điều kiện trong func chấp nhận [có nghĩa là True]

Ví dụ:

Sử dụng filter[] thông thường

my_list = [1, 2, 3, 4, 5]

def so_chan[number]:

    if number % 2 == 0:

        return True

    else:

        return False

print filter[so_chan, my_list]  # [2,4]

Sử dụng hàm Lambda

print filter[lambda x: x%2 ==0, my_list]# [2,4]

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ố. Đây không phải một hàm tích hợp sẵn trong Python mà nằm trong package functools. Hàm reduce sẽ tính toán giá trị các tham số và sau đó trả về kết quả. 

Ví dụ sử dụng hàm Lambda với reduce

# Python code to illustrate 

# map[] with lambda[] 

# to get double of a list.

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

final_list = list[map[lambda x: x*2 , li]]

print[final_list]

Ưu điểm và nhược điểm khi sử dụng hàm Lambda trong Python

Ưu điểm: Hàm Lambda sẽ giúp việc lập trình trong Python trở nên tinh gọn và tối ưu hơn. Đặc biệt khi bạn cần xử lý logic tại một điểm nhất định trong thời gian ngắn.

Nhược điểm: Khi sử dụng hàm Lambda việc debug và bảo trì sẽ khó khăn hơn.

Kết luận: Hàm Lambda là một trong những hàm phổ biến sử dụng trong Python. Bạn có thể sử dụng hàm Lambda để lập trình một cách nhanh chóng và hiệu quả hơn. 

Chủ Đề