0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Chi tiết về Hàm Lambda trong Python: Cách Sử Dụng Hiệu Quả với Map, Filter và Reduce

Đăng vào 3 tháng trước

• 4 phút đọc

Chủ đề:

Python

Hướng Dẫn Chi tiết về Hàm Lambda trong Python

Bài viết này sẽ cung cấp cho bạn cái nhìn sâu sắc về cách sử dụng hàm lambda trong Python, bao gồm cú pháp, cách sử dụng thực tế và những điểm hạn chế của nó. Việc nắm vững hàm lambda giúp bạn viết mã Python ngắn gọn, hiệu quả và dễ quản lý hơn.

Hàm Lambda trong Python Là Gì?

Trong ngôn ngữ lập trình Python, hàm lambda là một loại hàm nhỏ, ẩn danh được khai báo bằng từ khóa lambda. Các hàm này thường được sử dụng để thực hiện các thao tác ngắn gọn, chỉ cần thiết cho một lần sử dụng, trong khi việc định nghĩa một hàm hoàn chỉnh có thể là quá phức tạp.

Tên gọi "hàm ẩn danh" có nghĩa là chúng không cần có tên, mặc dù bạn có thể gán nó cho một biến nếu muốn sử dụng lại. Hàm lambda rất hữu ích trong những trường hợp bạn cần một hàm đơn giản và nhanh chóng trong thời gian ngắn.

Tuy nhiên, đối với các hoạt động phức tạp hơn, khuyến nghị là sử dụng hàm thông thường được định nghĩa bằng def, vì điều này giúp mã trở nên dễ đọc và bảo trì hơn.

Cú Pháp và Cách Sử Dụng Cơ Bản Của Hàm Lambda

python Copy
lambda arguments: expression

# Để gán tên cho hàm, bạn có thể làm như sau:
function_name = lambda arguments: expression

# Điều này tương đương với:
def function_name(arguments):
    return expression

Khác với các hàm thông thường, hàm lambda chỉ có thể chứa một biểu thức duy nhất. Mặc dù bạn có thể truyền vào nhiều đối số, nhưng không thể chứa các câu lệnh hoặc nhiều biểu thức. Hãy cùng xem một vài ví dụ:

Ví Dụ Về Hàm Lambda

python Copy
# Hàm thông thường để tính trung bình của ba số

def average(x, y, z):
    return (x + y + z) / 3

# Hàm lambda để tính trung bình của ba số
average = lambda x, y, z: (x + y + z) / 3

Ngoài ra, bạn cũng có thể sử dụng hàm lambda để thực hiện các phép toán hoặc chuyển đổi dữ liệu một cách linh hoạt. Ví dụ dưới đây cho thấy cách kết hợp hai chuỗi và chuyển đổi chúng thành chữ hoa:

python Copy
concat_and_uppercase = lambda str1, str2: (f'The concatenated string is {str1 + str2}'.upper())

print(concat_and_uppercase("hello", "world"))  # Kết quả: THE CONCATENATED STRING IS HELLOWORLD

Cách Gọi Hàm Lambda

Có ba cách chính để sử dụng hoặc gọi hàm lambda:

1. Gán cho Một Biến

python Copy
multiply = lambda x, y: print(f'{x} * {y} = {x * y}')
multiply(2, 10)  # Kết quả: 2 * 10 = 20

2. Gọi Trực Tiếp Hàm Lambda

python Copy
print((lambda x, y: f'{x} * {y} = {x * y}')(2, 10))  # Kết quả: 2 * 10 = 20

3. Sử Dụng Làm Đối Số Cho Các Hàm Bậc Cao Hơn

Hàm lambda thường được dùng làm đối số cho các hàm bậc cao hơn như map, filter, và reduce, thuận tiện cho việc xử lý dữ liệu trong lập trình hàm.

Sử Dụng Hàm Lambda Với map()

Hàm map áp dụng một hàm vào mỗi mục trong một iterable và trả về một iterable mới với các mục đã được cập nhật. Cú pháp của hàm map như sau:

python Copy
map(function, iterable)

Chẳng hạn, hãy xem ví dụ sau:

python Copy
# Danh sách các cặp số
pairs = [(2, 3), (4, 5), (6, 7)]

# Sử dụng hàm lambda với map để nhân từng cặp và in kết quả
list(map(lambda pair: print(f'{pair[0]} * {pair[1]} = {pair[0] * pair[1]}'), pairs))

Sử Dụng Hàm Lambda Với filter()

Hàm filter cho phép lọc các phần tử trong iterable theo một điều kiện. Chỉ các phần tử trả về True sẽ có mặt trong iterable mới. Cú pháp là:

python Copy
filter(predicate, iterable)

Ví Dụ:

python Copy
# Danh sách tuổi
ages = [25, 30, 18, 42, 17, 50, 22, 19]

# Lọc ra người lớn (từ 18 tuổi trở lên)
adults = filter(lambda age: age >= 18, ages)
print(list(adults))  # Kết quả: [25, 30, 18, 42, 50, 22, 19]

Sử Dụng Hàm Lambda Với reduce()

Hàm reduce áp dụng một hàm được chỉ định cho các phần tử trong iterable để giảm chúng thành một giá trị duy nhất. Cú pháp như sau:

python Copy
from functools import reduce
reduce(function, iterable)

Ví Dụ:

python Copy
from functools import reduce

# Danh sách các số
numbers = [1, 2, 3, 4, 5]

# Sử dụng reduce với hàm lambda để tính tổng các số
sum_of_numbers = reduce(lambda x, y: x + y, numbers)
print(sum_of_numbers)  # Kết quả: 15

Sử Dụng Hàm Lambda Trong Các Trường Hợp Khác

Hàm lambda cũng có thể được sử dụng trong các tình huống khác như sắp xếp danh sách, hoặc trong biểu thức danh sách. Dưới đây là hai ví dụ:

1. Sắp Xếp Danh Sách Chuỗi

python Copy
cities = ["India", "Germany", "America", "Japan"]
sorted_cities = sorted(cities, key=lambda city: city.lower())

print(sorted_cities)  # Kết quả: ['America', 'Germany', 'India', 'Japan']

2. Hàm Lambda Trong List Comprehension

python Copy
# Danh sách các số
numbers = [1, 2, 3, 4, 5]

# Sử dụng hàm lambda trong list comprehension để bình phương từng số
squared_numbers = [(lambda x: x ** 2)(x) for x in numbers]
print(squared_numbers)  # Kết quả: [1, 4, 9, 16, 25]

Kết Luận

Hàm lambda trong Python là một công cụ mạnh mẽ giúp bạn viết các hàm nhỏ gọn và hiệu quả. Chúng rất hữu ích trong lập trình hàm với các hàm như map, filter, và reduce. Khi sử dụng hàm lambda, bạn nên cân nhắc giữa sự ngắn gọn và khả năng đọc mã—đối với những logic phức tạp, hãy sử dụng hàm thông thường định nghĩa bằng def để tăng tính dễ hiểu, có thể bảo trì và cung cấp tài liệu cho mã.

Nắm vững hàm lambda sẽ giúp bạn cải thiện tính chất ngắn gọn và hiệu quả cho mã nguồn Python của bạn. Cảm ơn bạn đã đọc bài viết này!

source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào