Python đã sắp xếp lambda

Hàm lambda một trong các 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ề Hàm Lambda nhé

Nội dung của bài viết

  • 1 Hàm lambda là gì
  • 2 Có thể có nhiều tham số
  • 3 Các cách truyền tham số
  • 4 Sử dụng lambda với map[], filter[], reduce[]
    • 4. 1 Sử dụng lambda với map[]
    • 4. 2 Sử dụng lambda với filter[]
    • 4. 3 Sử dụng lambda với reduce[]
  • 5 Trả về nhiều giá trị
  • 6 nếu khác trong Lambda
  • 7 Các hàm chính của Lambda
  • 8 Kết luận

Hàm lambda là gì

Hàm lambda là cách đơn giản để khai báo một hàm. Đôi khi chúng ta còn nghe đến từ các nhà khai thác Lambda khác

Ở 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ó đủ đơn giản để sử dụng. Vì sao lại cần có 1 cách khác để khai báo hàm? . Lambda is function hide list [anonymous] tức là chức năng không cần khai báo tên

Thường cung cấp cho ta sử dụng hàm lambda 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 thường, hàm doubler sẽ trả về giá trị bổ sung bằng 2 lần giá trị truyền vào

We try used 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 hàm lambda sử dụng cú pháp

tham số lambda. sự biểu lộ

Hàm lambda không cần sử dụng từ khóa trả về, lambda tự động trả về giá trị của biểu thức

There can have many parameters

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ách truyền tham số

Như đã nói về các loại tham số của hàm function lambda cũng hỗ trợ các loại tham số

  • Đối số vị trí
  • Đối số từ khóa
  • Đối số mặc định
  • Đối số vị trí có độ dài thay đổi [* args]
  • Đối số từ khóa có độ dài thay đổi [**kwargs]

Vui lòng xem cách truyền các loại tham số trong ví dụ dưới đây

# 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[]

Có 3 hàm trong thư viện có sẵn của Python là map[], filter[] và reduce[]. Đây là 3 hàm thông thường hay sử dụng lambda và cho thấy tính hữu dụng của hàm lambda

Use lambda with 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]

Ví dụ trên là cách khai thác sử dụng hàm map[] theo cách thông thường

Vui lòng xem cách sử dụng hàm lambda

# 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]

Trong ví dụ này, hàm doubler không cần thiết, thay vào đó chúng ta sử dụng hàm lamba, mã nguồn nhìn ngắn gọn hơn

Use lambda with filter[]

Hàm filter[] sử dụng một hàm là điều kiện để tạo một danh sách mới từ một danh sách có sẵn

# 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]

Please try using lambda

# Lọc tuổi trên 18

age = [5, 7, 18, 19, 25, 40]
adults = filter[lambda x: x> 18, age]
print[list[adults]]
# Prints [19, 25, 40]

The you can see source code short gon better

Use lambda with reduce[]

Hàm reduce[] được viết trong thư viện functools, muốn sử dụng chúng ta phải nhập gói này

Xem ví dụ sử dụng reduce[] theo cách thông thường

________số 8

Chúng ta sử dụng reduce[] để cộng giá trị của các phần tử trong danh sách

Cú pháp của hàm reduce[] là: reduce[, ], kết quả trả về của func phải có kiểu giống với kiểu của các phần tử trong iterable. Tham số của func cũng cùng kiểu với kết quả trả về.

Cố gắng sử dụng lambda với reduce[] nhé

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
0

if other in Lambda

Câu lệnh if other không được sử dụng trong Lambda, nhưng thay vào đó chúng ta có thể sử dụng biểu thức if other như ví dụ dưới đây

doubler = lambda x: x*2

print[doubler[5]]
# Prints 10

print[doubler[15]]
# Prints 30
1

Các chức năng chính của Lambda

Trong Python key functions là hàm bậc cao [ hàm có tham số là một hàm và trả về kết quả là một hàm]

Dưới đây là một số chức năng chính

  • phương pháp liệt kê. loại[]
  • Chức năng tích hợp sẵn. đã sắp xếp [], tối thiểu [], tối đa []

We try used lambda as key function

doubler = lambda x: x*2

print[doubler[5]]
# Prints 10

print[doubler[15]]
# Prints 30
2

Kết luận

Hàm lambda rất hữu dụng và quan trọng trong Python, chúng ta sử dụng để mã nguồn được rút gọn hơn

Chủ Đề