Phép toán lambda trong python

Hàm lambda trong Python là hàm ẩn danh, một hàm không có từ khóa định nghĩa và tên. Để tạo hàm này, chúng ta phải sử dụng từ khóa Python lambda và cú pháp của biểu thức là

lambda arguments: expression

Hàm lambda này chấp nhận bất kỳ số lượng đối số nào. Tuy nhiên, nó chỉ cần một biểu thức. Ví dụ, Python lambda a, b: a + b. Ở đây, a và b là các đối số được hàm chấp nhận, a + b là biểu thức.

  • Ví dụ về hàm lambda trong Python
    • Python lambda Sum
    • Nhiều giá trị
    • Giá trị đối số mặc định của biểu thức lambda
    • Hàm lambda trong Python không có Đối số
    • Các hàm ẩn danh trong Python sử dụng lambda
  • Các hàm tích hợp trong Python Lambda
    • Hàm lambda với bộ lọc Ví dụ
    • Bản đồ biểu thức lambda Ví dụ
    • Các hàm giảm và lambda fVí dụ
    • Ví dụ về hàm tích hợp

Danh sách các ví dụ sau đây giúp tìm hiểu các hàm lambda trong Python.

Sử dụng câu lệnh sau để hiển thị True hoặc False dưới dạng đầu ra. Nó có thể khiến bạn hiểu rằng bạn không cần bất kỳ đối số nào để tạo biểu thức lambda Python.

num = lambda: True
 
print(num())

Không có đối số đầu ra

True

Python lambda Sum

Chúng tôi đang sử dụng biểu thức lambda trong Python để thêm 5 vào giá trị đối số đã cho. Nó chấp nhận một giá trị vì chúng tôi đã chỉ định một đối số sau từ khóa. Sau dấu hai chấm, nó là một biểu thức hoặc chức năng mà nó phải thực hiện khi chúng ta gọi hàm ẩn danh này.

num = lambda a: a + 5
 
print(num(10))

Chúng tôi đã vượt qua 10 như đối số. 10 + 5 = 15.

15

Trong ví dụ Python lambda Sum này, chúng tôi đang sử dụng hai đối số để thực hiện phép cộng hoặc tìm tổng của hai số. Nó có nghĩa là chúng ta phải gán hai giá trị trong khi gọi biểu thức này.

add = lambda a, b : a + b
 
print(add(10, 20))
30

Nói chung, chúng ta có thể đạt được điều tương tự bằng cách khai báo hoặc tạo một phương thức. Lần này, chúng tôi đang sử dụng biểu thức lambda Python và hàm bình thường. Cả hai đều cho cùng một kết quả.

add = lambda x, y : x + y
print(add(10, 20))

print("nResult from a Function")
def add_func(x, y):
return x + y

print(add_func(10, 20))

Cả hàm này và hàm bình thường đều trả về cùng một kết quả. Tuy nhiên, hàm Python bình thường cần một từ khóa def để định nghĩa hàm, tên phương thức và giá trị trả về. Trong khi, phương pháp này không cần bất kỳ phương pháp nào trong số chúng. Theo mặc định, nó trả về kết quả biểu thức.

30

Result from a Function
30

Những biểu thức này không phải là để thêm hai giá trị. Chúng ta có thể thực hiện các phép tính nhân, trừ hoặc bất kỳ phép tính nào khác trong biểu thức lambda của Python. Ở đây, chúng tôi đang nhân hai giá trị đối số.

Để hiểu rõ hơn về điều này, chúng tôi cũng đang đặt hàm thông thường. Vui lòng tham khảo Các hàm trong Python

multi = lambda a, b : a * b
print(multi(5, 20))
 
print("nResult from a multi")
def multi_func(a, b):
    return a * b
 
print(multi_func(5, 20))
100
 
Result from a multi
100

Nhiều giá trị

Trong ví dụ Hàm lambda Python này, chúng tôi đang sử dụng ba đối số. Tiếp theo, chúng tôi đang nhân ba giá trị đối số đó.

multi =lambda a, b, c : a * b * c
print(multi(5, 2, 6))
 
print("nResult from a multi")
def multi_func(a, b, c):
    return a * b * c
 
print(multi_func(5, 2, 6))

Với đầu ra ba đối số

60

Result from a multi
60

Cho đến bây giờ, chúng tôi đã sử dụng biểu thức Hàm lambda Python này để tính toán một cái gì đó và trả về kết quả. Tuy nhiên, hãy sử dụng câu lệnh print để in kết quả đầu ra. Đoạn mã dưới đây in Hello World! như một đầu ra.

Chúng ta cũng có thể đạt được kết quả tương tự bằng cách gọi câu lệnh đó với dấu ngoặc đơn từ chính shell.

Giá trị đối số mặc định của biểu thức lambda

Trong ví dụ biểu thức lambda Python này, chúng tôi đã gán giá trị mặc định cho cả ba đối số. Tiếp theo, chúng ta cộng và nhân ba trong số chúng. Nếu chúng ta có các giá trị mặc định, chúng ta không phải chuyển các giá trị trong khi gọi chúng.

add = lambda x = 10, y = 20, z = 30 : x + y + z
print(add()) # 10 + 20 + 30
 
multi = lambda x = 10, y = 20, z = 30 : x * y * z
print(multi()) # 10 * 20 * 30
60
6000

Tuy nhiên, bạn có thể ghi đè các giá trị mặc định bằng cách chuyển các giá trị mới làm đối số. Ở đây, câu lệnh in đầu tiên ghi đè 10 với 12, 20 với 14 và 30 với 16. Điều đó có nghĩa là, x = 12, y = 14 và z = 16. Trong câu lệnh thứ hai, x = 75, y = 126 và z = 30 .

add = lambda x = 10, y = 20, z = 30 : x + y + z
print(add(12, 14, 16)) # 12 + 14 + 16
print(add(75, 126)) # 75 + 126 + 30
print(add(222)) # 222 + 20 + 30
print(add()) # 10 + 20 + 30

print("Multiplication Values")
multi = lambda x = 10, y = 20, z = 30 : x * y * z
print(multi(2, 4, 5)) # x = 2, y = 4, z = 5
print(multi(100, 22)) # x = 100, y = 22, z = 30
print(multi(9)) # x = 9, y = 20, z = 30
print(multi()) # 10 * 20 * 30

Phép toán lambda trong python

Hàm lambda trong Python không có Đối số

Tuy nhiên, nếu bạn không muốn chuyển bất kỳ đối số nào, bạn muốn trả về một cái gì đó từ nó, thì bạn có thể sử dụng loại câu lệnh này.

Chúng ta không phải chuyển bất kỳ giá trị đối số nào để gọi các biểu thức này. Bất cứ khi nào chúng tôi gọi chúng, chúng đều trả về cùng một kết quả.

add = lambda : 10 + 20
print(add())
30

Nếu chúng ta thay + bằng * (10 * 20) trong ví dụ trên, chúng ta có thể nhận được kết quả phép nhân. Và đầu ra của 10 * 20 = 200.

Các hàm ẩn danh trong Python sử dụng lambda

Nó rất mạnh khi chúng ta sử dụng hàm ẩn danh này bên trong một phương thức. Ở đây, chúng tôi đã khai báo một hàm chấp nhận một đối số. Bên trong phương thức, chúng tôi sử dụng biểu thức này để nhân giá trị đó với số lần chưa biết trước.

def new_func(n):
    return lambda a : a * n
 
number = new_func(2)
 
print(number(50))
100

Nó gọi phương thức new_func trong đó n = 2. Có nghĩa là, phương thức này trả về a: a * 2. Sau đó, chúng tôi gán giá trị đó cho số (lobject)

number = new_func(2)

Tiếp theo, chúng tôi gọi số đó là 50 (đây là giá trị đối số. Có nghĩa là, 50: 50 * 2 => 100

Gọi phương thức này với các giá trị khác nhau. Đầu tiên với 2, và sau đó là 3.

def new_func(n):
    return lambda a : a * n
 
number1 = new_func(2)
number2 = new_func(3)
 
print(number1(50))
print(number2(50))
100
150

Các hàm tích hợp trong Python Lambda

Chúng ta có thể sử dụng các phương thức Tích hợp sẵn có cùng với chức năng này.

Hàm lambda với bộ lọc Ví dụ

Chúng tôi sử dụng chức năng lọc có sẵn để lọc chuỗi các mục trong danh sách. Đầu tiên, chúng tôi khai báo một danh sách các số từ 1 đến 15. Tiếp theo, chúng tôi sử dụng phương thức lọc với biểu thức này. Biểu thức bộ lọc lambda Python này kiểm tra xem một số có chia hết cho hai hay không. Tiếp theo, phương thức bộ lọc trả về tất cả các giá trị True.

Phương thức này lọc và trả về Số chẵn và Số lẻ. Tham khảo bài viết Danh sách

number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
print(number)
 
even_num = list(filter(lambda x : x % 2 == 0, number))
print(even_num)
 
odd_num = list(filter(lambda x : x % 2 != 0, number))
print(odd_num)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[2, 4, 6, 8, 10, 12, 14]
[1, 3, 5, 7, 9, 11, 13, 15]

Bản đồ biểu thức lambda Ví dụ

Không giống như bộ lọc, hàm bản đồ lấy từng mục danh sách và trả về cả giá trị Đúng và Sai. Trong ví dụ bản đồ lambda Python này, chúng tôi đã sử dụng phương thức bản đồ để trả về giá trị boolean. Nó kiểm tra từng giá trị riêng lẻ có chia hết cho 2 bằng 0. Nếu đúng, nó trả về True. Nếu không, nó trả về false.

number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(number)
 
new_num = list(map(lambda x : x % 2 == 0, number))
print(new_num)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[False, True, False, True, False, True, False, True, False, True]

Lần này, chúng tôi đang thực hiện phép nhân bằng cách sử dụng chức năng bản đồ. Nó lấy một mục danh sách riêng lẻ tại một thời điểm và thực hiện phép nhân. Cuối cùng, biểu thức trả về danh sách đã sửa đổi.

number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(number)
 
double_num = list(map(lambda x : x * 2, number))
print(double_num)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

Nếu bạn thay thế biểu thức ở trên x: x * 2 bằng x ** 2, kết quả sẽ là [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Bằng cách sử dụng chức năng bản đồ, bạn cũng có thể thực hiện các phép tính trên nhiều danh sách. Ví dụ, ví dụ này thực hiện cộng, trừ và nhân hai danh sách. Nó nhận một giá trị từ cả hai danh sách ở cùng một vị trí và thực hiện phép tính.

number1 = [10, 20, 30]
number2 = [15, 25, 35]
print(number1)
print(number2)
 
print()
 
mul_num = list(map(lambda x, y : x * y, number1, number2))
print(mul_num)

Đầu tiên, x = 10 từ danh sách number1, y = 15 từ danh sách number2. Bằng cách thêm cả hai người trong số họ nhận được 25.

[10, 20, 30]
[15, 25, 35]

[150, 500, 1050]

Các hàm giảm và lambda fVí dụ

Hàm giảm lambda trong Python chấp nhận hai giá trị và một danh sách làm giá trị đối số và chúng tôi đang sử dụng hàm giảm cùng với điều này.

from functools import reduce
number = [10, 20, 30, 15, 25, 35, 45]
print(number)
 
print("==========")
add_num = reduce((lambda x, y : x + y), number)
print(add_num)
[10, 20, 30, 15, 25, 35, 45]]
==========
180

giảm phân tích

Đầu tiên, x = 10, y = 20. Hoặc viết là ((((((10 + 20) + 30) + 15) + 25) + 35) + 45)

Ví dụ về hàm tích hợp

Cho đến bây giờ, chúng tôi đang sử dụng biểu thức để tính toán một cái gì đó hoặc thực hiện các phép toán số. Tuy nhiên, bạn cũng có thể sử dụng hàm lambda của Python trên dữ liệu chuỗi.

Trong ví dụ này, chúng tôi đã khai báo một danh sách chuỗi. Tiếp theo, chúng tôi sử dụng phương pháp sắp xếp để sắp xếp các mục trong danh sách. Tuy nhiên, chúng tôi đã sử dụng khóa được sắp xếp như một biểu thức.

Trong biểu thức này, chúng tôi đang sử dụng phương thức len để tìm độ dài của mỗi từ. Nó có nghĩa là việc phân loại được thực hiện dựa trên độ dài của mặt hàng.

x = ['apple', 'Mango Fruit', 'Banana', 'oranges', 'cherry','kiwi']
print(x)
 
y = sorted(x, key =lambda a: len(a))
print(y)
 
z = sorted(x, key =lambda a: a.casefold())
print(z)

Xuất ra các hàm lambda len và casefold trong Python.

['apple', 'Mango Fruit', 'Banana', 'oranges', 'cherry', 'kiwi']
['kiwi', 'apple', 'Banana', 'cherry', 'oranges', 'Mango Fruit']
['apple', 'Banana', 'cherry', 'kiwi', 'Mango Fruit', 'oranges']