Lambda

Python SELF VI
Mức độ , Bài học
Có sẵn

2.1 Định nghĩa lambda function

Lambda function, còn được gọi là hàm vô danh, là những hàm gọn nhẹ trên một dòng không có tên, có thể được tạo ra bằng cách sử dụng từ khóa lambda.

Không giống như các hàm thông thường được định nghĩa bằng def, lambda function được tạo ra ngay tại chỗ và thường được sử dụng cho những thao tác đơn giản trên một dòng.

Cú pháp của lambda function gồm từ khóa lambda, theo sau là các đối số, dấu hai chấm và biểu thức:

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

Lambda function có thể nhận bất kỳ số lượng đối số nào, nhưng chỉ có thể chứa một biểu thức duy nhất. Giá trị của biểu thức này được trả về tự động.

Ví dụ:

Lambda function Hàm thông thường

square = lambda x: x ** 2
print(square(5))  # Kết quả: 25
                    

def square(x):
    return x ** 2
print(square(5))  # Kết quả: 25
                

sum = lambda a, b: a + b
            

def sum(a, b):
    return a + b
                

up = lambda s: s.upper()
            

def up(s):
    return s.upper()
                    

2.2 Ứng dụng của lambda function

Lambda function thường được sử dụng kết hợp với các hàm khác, như map(), filter()sorted(), cũng như làm đối số cho các hàm khác.

Sử dụng với map()

Hàm map() áp dụng một hàm đã định nghĩa cho mỗi phần tử của một đối tượng có thể lặp qua và trả về một trình lặp với các kết quả. Lambda function rất thích hợp để sử dụng với map(), bởi vì nó cho phép xác định ngắn gọn một hàm để chuyển đổi các phần tử.


numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # Kết quả: [1, 4, 9, 16, 25]
        

Sử dụng với filter()

Hàm filter() trả về một trình lặp gồm các phần tử của một đối tượng có thể lặp qua, mà hàm đã định nghĩa trả về True. Lambda function cho phép xác định nhanh chóng điều kiện lọc.


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # Kết quả: [2, 4, 6, 8, 10]

Sử dụng với sorted()

Hàm sorted() sắp xếp các phần tử của một đối tượng có thể lặp qua. Lambda function có thể sử dụng để xác định tiêu chí sắp xếp tùy chỉnh thông qua đối số key.


words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)  # Kết quả: ['date', 'apple', 'banana', 'cherry']
        

Lambda function trong các biểu thức

Lambda function có thể được sử dụng trong các biểu thức khác, như comprehensions của danh sách và generators của từ điển.


pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs)  # Kết quả: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
        

2.3 Hạn chế của lambda function

Lambda function có một số hạn chế so với các hàm thông thường:

Giới hạn bởi biểu thức:

Lambda function chỉ có thể chứa một biểu thức duy nhất và không thể bao gồm các câu lệnh phức tạp như vòng lặp hay các câu lệnh điều khiển (ví dụ: if, else v.v.).

Thiếu tài liệu:

Lambda function không thể chứa các chuỗi tài liệu (docstring), điều này làm khó khăn cho việc tài liệu hóa chức năng của chúng.

Khả năng debug hạn chế:

Do thiếu tên và tài liệu, lambda function khó debug hơn so với các hàm thông thường.

Ví dụ hạn chế của lambda function

Cố gắng sử dụng nhiều biểu thức trong một lambda function sẽ dẫn đến lỗi cú pháp:


# Mã này sẽ gây ra lỗi
invalid_lambda = lambda x: x ** 2; print(x)
        
    
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION