Tìm hiểu Lambda trong 5 phút

0
24

Lambda là tính năng cao cấp trong Python. Để viết code Python dễ đọc, bạn cần phải hiểu và sử dụng được những tính năng cao cấp này..

Và chỉ có như thế, bạn mới trở thành lập trình viên Python thực thụ.

Thế nên, hôm nay mình với bạn sẽ cùng tìm hiểu một chút về hàm Lambda nhé.

Tìm hiểu Lambda trong 5 phút
Tìm hiểu Lambda trong 5 phút

Lambda là gì?

Lambda có nghĩa là anonymous function (Hàm vô danh).

Trong lập trình, chúng ta đôi khi cần dùng một hàm đơn giản khoảng 1 – 2 lần.

Trong trường hợp này, chúng ta không cần phải viết nó như một chức hàm đầy đủ. Thay vào đó, bạn sử dụng lambda để làm cho chương trình ngắn gọn hơn.

Cú pháp của hàm lambda như sau:

lambda Parameter: Operation(parameter)

Phía bên trái của dấu hai chấm là tham số được truyền vào và phía bên phải của dấu hai chấm là thao tác sử dụng tham số.

Ví dụ như:

lambda x: x + 1

Hàm lambda ở trên tương đương với:

def plus(x):
    return x + 1

Tương tự:

lambda x, y: x * y

tương đương với:

def mul(x, y):
    return x * y

Một vài ví dụ thực tế về hàm lambda trong Python.

1. Sắp xếp phần tử trong list với lambda

Giả sử chúng ta có một danh sách:

nums = [3, 1, 7, 4, 8, 10]

Việc sắp xếp các chữ số theo thứ tự giảm dần rất đơn giản, như thế này:

>>>nums = [3, 1, 7, 4, 8, 10]
>>>sorted(nums, reverse = True)
>>>[10, 8, 7, 4, 3, 1]

Vậy thì sắp xếp một danh sách lồng nhau thì sao?

Ví dụ với danh sách này:

nums = [[10, 20, 11], [3, 9, 6], [8, 14, 3]]

Chúng ta muốn sắp xếp theo thứ tự giảm dần theo giá trị thứ hai trong mỗi phần tử.

Bạn không thể sắp xếp trực tiếp bằng cách sử dụng phương thức sorted() như ở trên.

Tại thời điểm này, lambda thể hiện rõ khả năng của mình:

>>>nums = [[10, 20, 11], [3, 9, 6], [8, 14, 3]]
>>>sorted(nums, key = lambda x: x[1], reverse = True)
>>>[[10, 20, 11], [8, 14, 3], [3, 9, 6]]

Danh sách lồng nhau như trên được sắp xếp theo thứ tự giảm dần theo giá trị thứ hai của phần tử.

Nếu không sử dụng hàm lambada, bạn sẽ cần viết như sau:

>>>def lis(x):
>>>    return x[1]
>>>sorted(nums, key = lis, reverse = True)
>>>[[10, 20, 11], [8, 14, 3], [3, 9, 6]]

Như vậy, rõ ràng là sử dụng hàm lambda khiến code của chúng ta ngắn đi khá nhiều.

Khi bạn đã hiểu lambda thì nó cũng rất dễ đọc nữa.

2. Sắp xếp theo thứ tự giảm dần theo giá trị của Dictionaries

Giả sử chúng ta có Dictionaries như sau:

nums = [{'name':'Hai', 'age':50}, {'name':'Doanh', 'age':49}, {'name':'Viet', 'age':51}]

Bây giờ chúng ta muốn sắp xếp theo thứ tự tuổi (age) giảm dần?

Đây là cách bạn sử dụng hàm lambda:

>>> sorted(nums, key = lambda x: x['age'], reverse=True)

3. Lấy giá trị lớn nhất trong list sử dụng hàm lambda

Giải sử chúng ta có list sau:

nums = ['1', '100', '111', '2', 2, 2.57]

Và bạn muốn lấy giá trị lớn nhất trong List này.

Nhưng list này có chứa string, bạn không thể so sánh trực tiếp.

Vậy thì làm thế nào?

Đây là cách sử dụng hàm lambda để xử lý.

>>>max(nums, key = lambda x: int(x))
>>>'111'

Nếu không sử dụng hàm lambda thì bạn cần phải viết một hàm rồi sau đó truyền vào trong phương thức max(), như sau:

>>>def trsn(x):
>>>    return int(x)
>>>max(nums, key = trsn)

Nếu lambda được kết hợp với map()filter() thì còn có nhiều cách sử dụng hơn nữa.

Ưu điểm của việc sử dụng lambda như trên là làm cho code ngắn gọn hơn.

Nhược điểm là chương trình sẽ không dễ hiểu đối với những người mới bắt đầu, nhưng miễn là bạn hiểu cách sử dụng lambda, nó giải pháp rất tuyệt vời đấy.

Chúc mừng bạn đã biết cơ bản về hàm Lambda trong Python.

Như vậy, chỉ với 5 phút và một số ví dụ về hàm lambda trong Python rất đơn giản thôi mà bạn đã hiểu kha khá về lambda rồi đấy.

Python Lambda không khó phải không nào.

Nếu bạn muốn học Python bài bản thì có thể đăng ký ngay: Khóa học Python ở Hà Nội.

Chúc bạn học Python tốt!

Tham khảo:

https://docs.python.org/3/tutorial/controlflow.html
https://docs.python.org/3/reference/expressions.html

LEAVE A REPLY

Please enter your comment!
Please enter your name here