Lambda function một trong những tính năng hữu dụng và quan trọng trong Python. Tuy nhiên lambda lại khó hiểu và thường mắc lỗi. Để tránh việc này chúng ta cùng nhau tìm hiểu kỹ về Lambda Function nhé.
Nội dung chính ShowShow
- Lambda function là gì
- Có thể có nhiều tham số
- Các cách truyền tham số
- Sử dụng lambda với map[], filter[], reduce[]
- Sử dụng lambda với map[]
- Sử dụng lambda với filter[]
- Sử dụng lambda với reduce[]
- Trả về nhiều giá trị
- if else trong Lambda
- Lambda Key Functions
- Kết luận
Nội dung của bài
- 1 Lambda function là gì Lambda function là gì
- 2 Có thể có nhiều tham số Có thể có nhiều tham số
- 3 Các cách truyền tham số Các cách truyền tham số
- 4 Sử dụng lambda với map[], filter[], reduce[] Sử dụng lambda với map[], filter[], reduce[]
- 4.1 Sử dụng lambda với map[] Sử dụng lambda với map[]
- 4.2 Sử dụng lambda với filter[] Sử dụng lambda với filter[]
- 4.3 Sử dụng lambda với reduce[] Sử dụng lambda với reduce[]
- 5 Trả về nhiều giá trị Trả về nhiều giá trị
- 6 if else trong Lambda if else trong Lambda
- 7 Lambda Key Functions Lambda Key Functions
- 8 Kết luận Kết luận
Lambda function là gì
Lambda function là cách đơn gian để khai báo một hàm. Đôi khi chúng ta còn nghe đến với từ kháo Lambda operators.
Ở bài hàm trong Python chúng ta đã tìm hiểu cách khai báo một hàm bằng từ khóa def, có lẽ đủ đơn giản để dùng. Vậy tại sao lại cần có 1 cách khác để khai báo hàm? Câu trả lời là: Lambda là hàm ẩn danh [anonymous] tức là function mà không cần khai báo tên.
Thường cúng ta sử dụng lambda function với các hàm chỉ cần một dòng lệnh.
Ví dụ:
def doubler[x]:
return x*2
print[doubler[4]]
# Prints 8
print[doubler[10]]
# Prints 100
Ví dụ trên là cách khai báo hàm theo cách thường làm, hàm doubler sẽ trả về giá tị bằng 2 lần giá trị truyền vào.
Chúng ta thử dùng lambda function:
doubler = lambda x: x*2
print[doubler[5]]
# Prints 10
print[doubler[15]]
# Prints 30
Trong ví dụ trên chúng ta khai báo lambda function sử dụng cú pháp:
lambda parameters: expression
Hàm lambda không cần sử dụng từ khóa return, lambda tự động trả về giá trị của biểu thức.
Có thể có nhiều tham số
mul = lambda x, y: x*y
print[mul[5, 10]]
# Prints 50
Trong ví dụ trên hàm lambda nhận 2 tham số x, y và trả về giá trị là tích của x và y.
Các cách truyền tham số
Sử dụng lambda với map[], filter[], reduce[]
- Sử dụng lambda với map[]
- Sử dụng lambda với filter[]
- Sử dụng lambda với reduce[]
- Trả về nhiều giá trị
- if else trong Lambda
Lambda Key Functions
# Positional arguments
add = lambda x, y, z: x+y+z
print[add[2, 3, 4]]
# Prints 9
# Keyword arguments
add = lambda x, y, z: x+y+z
print[add[2, z=3, y=4]]
# Prints 9
# Default arguments
add = lambda x, y=3, z=4: x+y+z
print[add[2]]
# Prints 9
# *args
add = lambda *args: sum[args]
print[add[2, 3, 4]]
# Prints 9
# **args
add = lambda **kwargs: sum[kwargs.values[]]
print[add[x=2, y=3, z=4]]
# Prints 9
Sử dụng lambda với map[], filter[], reduce[]
Sử dụng lambda với map[]
Sử dụng lambda với map[]
# nhân đôi giá trị của từng phần tử
def doubler[x]:
return x*2
nums = [1, 3, 5, 7, 9, 10]
mod_list = map[doubler, nums]
print[list[mod_list]]
# Prints [2, 6, 10, 14, 18, 20]
Sử dụng lambda với filter[]
Sử dụng lambda với reduce[]
# nhân đôi giá trị của từng phần tử
nums = [1, 3, 5, 7, 9, 10]
doubler = map[lambda x: x*2, nums]
print[list[doubler]]
# Prints [2, 6, 10, 14, 18, 20]
Trả về nhiều giá trị
Sử dụng lambda với filter[]
Sử dụng lambda với reduce[]
# Lọc tuổi trên 18
def checkAge[age]:
if age > 18:
return True
else:
return False
age = [5, 7, 18, 19, 25, 40]
adults = filter[checkAge, age]
print[list[adults]]
# Prints [19, 25, 40]
Trả về nhiều giá trị
if else trong LambdaLambda Key Functions
Sử dụng lambda với reduce[]
Trả về nhiều giá trị
if else trong Lambda
# tính tổng các phần tử trong danh sách
from functools import reduce
def summer[a, b]:
return a + b
nums = [10, 20, 30, 40]
result = reduce[summer, nums]
print[result]
# Prints 100
Lambda Key Functions
Kết luận
Nội dung của bài
from functools import reduce
nums = [10, 20, 30, 40]
result = reduce[lambda a, b: a + b, nums]
print[result]
# Prints 100
Trả về nhiều giá trị
doubler = lambda x: x*2
print[doubler[5]]
# Prints 10
print[doubler[15]]
# Prints 30
0if else trong Lambda
Lambda Key Functions
doubler = lambda x: x*2
print[doubler[5]]
# Prints 10
print[doubler[15]]
# Prints 30
1Lambda Key Functions
Kết luận
Nội dung của bài
- 1 Lambda function là gì
- 2 Có thể có nhiều tham số
3 Các cách truyền tham số
doubler = lambda x: x*2
print[doubler[5]]
# Prints 10
print[doubler[15]]
# Prints 30
2Kết luận
Nội dung của bài