Các chức năng của Lambda và Cách sử dụng Chúng là gì?



Tìm hiểu các hàm lambda trong Python cùng với sự khác biệt giữa các hàm bình thường và các hàm lambda và cách chúng có thể được sử dụng trong filter (), map (), Reduce ().

Tên là một quy ước được sử dụng để chỉ hoặc đề cập đến bất kỳ thực thể nào. Hầu hết mọi thứ xung quanh chúng ta đều có tên. Thế giới lập trình cũng đi theo điều này. Nhưng nó có phải là bắt buộc để đặt tên cho tất cả mọi thứ? Hoặc bạn có thể có một cái gì đó chỉ là 'ẩn danh'? Câu trả lời là, có. ' cung cấp các Hàm Lambda, còn được gọi là các hàm Ẩn danh trên thực tế không có tên. Vì vậy, chúng ta hãy tiếp tục tìm hiểu về những 'Bí ẩn ẩn danh' này của Python, theo trình tự sau.

Vậy hãy bắt đầu :)





Tại sao sử dụng các hàm Lambda trong Python?


Mục đích chính của các chức năng ẩn danh xuất hiện khi bạn cần một số chức năng chỉ một lần. Chúng có thể được tạo bất cứ nơi nào chúng cần thiết. Vì lý do này, các Hàm Lambda trong Python còn được gọi là các hàm loại bỏ được sử dụng cùng với các hàm được xác định trước khác như filter (), map (), v.v. Các hàm này giúp giảm số lượng dòng mã của bạn khi so sánh với bình thường .

Để chứng minh điều này, hãy tiếp tục và tìm hiểu về các hàm Lambda của Python.



Các hàm Lambda trong Python là gì?


Các hàm Lambda trong Python là các hàm không có bất kỳ tên nào. Chúng còn được gọi là chức năng ẩn danh hoặc không tên. Từ ‘lambda’ không phải là một cái tên, mà là một từ khóa của nó. Từ khóa này chỉ định rằng hàm theo sau là ẩn danh.

Bây giờ bạn đã biết những hàm ẩn danh này đề cập đến những gì, chúng ta hãy đi sâu hơn để xem cách bạn viết những hàm Lambda Python này.

Làm thế nào để viết các hàm Lambda bằng Python?

Một hàm Lambda được tạo bằng cách sử dụng toán tử lambda và cú pháp của nó như sau:



TỔNG HỢP:

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

Python hàm lambda có thể có bất kỳ số lượng đối số nào nhưng nó chỉ cần một biểu thức. Các đầu vào hoặc đối số có thể bắt đầu từ 0 và tăng đến bất kỳ giới hạn nào. Cũng giống như bất kỳ hàm nào khác, hoàn toàn ổn nếu có các hàm lambda mà không cần đầu vào. Do đó, bạn có thể có các hàm lambda ở bất kỳ định dạng nào sau đây:

THÍ DỤ:

lambda: 'Chỉ định mục đích'

Ở đây, hàm lambda không nhận bất kỳ đối số nào.

THÍ DỤ:

lambda amột: “Chỉ định việc sử dụngmột'

Ở đây, lambda đang sử dụng một đầu vào làmột.

đăng bằng tốt nghiệp so với thạc sĩ

Tương tự, bạn có thể có lambda amột, đến2, đến3..đếnn.

Hãy lấy một vài ví dụ để chứng minh điều này:

VÍ DỤ 1:

a = lambda x: x * x print (a (3))

ĐẦU RA: 9

VÍ DỤ 2:

a = lambda x, y: x * y print (a (3,7))

ĐẦU RA: hai mươi mốt

Như bạn thấy, tôi đã lấy hai ví dụ ở đây. Ví dụ đầu tiên sử dụng hàm lambda chỉ với một biểu thức trong khi ví dụ thứ hai có hai đối số được truyền cho nó. Xin lưu ý rằng cả hai hàm đều có một biểu thức duy nhất theo sau là các đối số. Do đó, các hàm lambda không thể được sử dụng khi bạn cần các biểu thức nhiều dòng.

Mặt khác, các hàm python bình thường có thể nhận bất kỳ số lượng câu lệnh nào trong định nghĩa hàm của chúng.

Làm thế nào để các chức năng Ẩn danh giảm kích thước của mã?

Trước khi so sánh số lượng mã được yêu cầu, trước tiên chúng ta hãy viết ra cú pháp của và so sánh nó với hàm lambda được mô tả trước đó.

Bất kỳ hàm bình thường nào trong Python đều được định nghĩa bằng cách sử dụng phản đối từ khóa như sau:

TỔNG HỢP:

def function_name (tham số):
các câu lệnh)

Như bạn có thể thấy, số lượng mã cần thiết cho một hàm lambda khá ít hơn so với các hàm bình thường.

Hãy để chúng tôi viết lại ví dụ mà chúng tôi đã lấy trước đó bằng cách sử dụng các hàm bình thường.

THÍ DỤ:

def my_func (x): trả về x * x print (my_func (3))

ĐẦU RA: 9

Như bạn thấy, trong ví dụ trên, chúng ta cần một câu lệnh trả về trong my_func để đánh giá giá trị của bình phương là 3. Ngược lại, hàm lambda không sử dụng câu lệnh trả về này, nhưng, phần thân của hàm ẩn danh được viết cùng dòng với chính hàm, sau ký hiệu dấu hai chấm. Do đó kích thước của hàm nhỏ hơn kích thước của hàm my_func.

Tuy nhiên, các hàm lambda trong các ví dụ trên, được gọi bằng cách sử dụng một số a. Điều này được thực hiện bởi vì các hàm này không có tên và do đó yêu cầu một số tên được gọi. Nhưng, thực tế này có vẻ khó hiểu là tại sao lại sử dụng các hàm không tên như vậy khi bạn thực sự cần gán một số tên khác để gọi chúng? Và tất nhiên, sau khi gán tên a cho hàm của tôi, nó sẽ không còn vô danh nữa! Đúng?

Đó là một câu hỏi chính đáng, nhưng vấn đề là, đây không phải là cách đúng để sử dụng các hàm ẩn danh này.

Các chức năng ẩn danh được sử dụng tốt nhất trong các chức năng bậc cao hơn sử dụng một số hàm làm đối số hoặc trả về một hàm làm đầu ra. Để chứng minh điều này, bây giờ chúng ta hãy chuyển sang chủ đề tiếp theo.

Các hàm Python Lambda trong các hàm do người dùng định nghĩa:

Giống như đã đề cập ở trên, các hàm lambda được sử dụng trong các hàm khác để đánh dấu lợi thế tốt nhất.

Ví dụ sau đây bao gồm new_func là một hàm python bình thường nhận một đối số x. Đối số này sau đó được thêm vào một số đối số y không xác định được cung cấp thông qua hàm lambda.

THÍ DỤ:

def new_func (x): return (lambda y: x + y) t = new_func (3) u = new_func (2) print (t (3)) print (u (3))

ĐẦU RA:

6
5
Như bạn thấy, trong ví dụ trên, hàm lambda có trong new_func được gọi bất cứ khi nào chúng ta sử dụng new_func (). Mỗi lần, chúng ta có thể truyền các giá trị riêng biệt cho các đối số.

Bây giờ bạn đã thấy cách sử dụng các hàm ẩn danh trong các hàm bậc cao, bây giờ chúng ta hãy tiếp tục tìm hiểu một trong những cách sử dụng phổ biến nhất của nó nằm trong các phương thức filter (), map () và Reduce ().

Cách sử dụng các hàm Ẩn danh trong filter (), map () và Reduce ():

Các chức năng ẩn danh trong bộ lọc ():

bộ lọc ():

Phương thức filter () được sử dụng để lọc các vòng lặp đã cho (danh sách, tập hợp, v.v.) với sự trợ giúp của một hàm khác, được truyền dưới dạng đối số, để kiểm tra tất cả các phần tử là đúng hay sai.

Cú pháp của hàm này là:

TỔNG HỢP:

bộ lọc (chức năng, có thể lặp lại)

sự khác biệt giữa quá tải và ghi đè

Bây giờ hãy xem xét ví dụ sau:

THÍ DỤ:

my_list = [2,3,4,5,6,7,8] new_list = list (filter (lambda a: (a / 3 == 2), my_list)) print (new_list)

ĐẦU RA: [6]

Ở đây, my_list là danh sách các giá trị có thể lặp lại được chuyển đến hàm bộ lọc. Hàm này sử dụng hàm lambda để kiểm tra xem có bất kỳ giá trị nào trong danh sách hay không, giá trị đó sẽ bằng 2 khi chia cho 3. Đầu ra bao gồm một danh sách thỏa mãn biểu thức có trong hàm ẩn danh.

bản đồ():

Hàm map () trong Python là một hàm áp dụng một hàm đã cho cho tất cả các tệp lặp và trả về một danh sách mới.

TỔNG HỢP:

bản đồ (chức năng, có thể lặp lại)

Hãy lấy một ví dụ để chứng minh việc sử dụng các hàm lambda trong hàm map ():

THÍ DỤ:

my_list = [2,3,4,5,6,7,8] new_list = list (map (lambda a: (a / 3! = 2), li)) print (new_list)

ĐẦU RA:

[Đúng, Đúng, Đúng, Đúng, Sai, Đúng, Đúng]

Kết quả trên cho thấy rằng, bất cứ khi nào giá trị của các vòng lặp không bằng 2 khi chia cho 3, kết quả trả về phải là True. Do đó, đối với tất cả các phần tử trong my_list, nó trả về true ngoại trừ giá trị 6 khi điều kiện thay đổi thành False.

giảm():

Hàm Reduce () được sử dụng để áp dụng một số hàm khác cho danh sách các phần tử được truyền dưới dạng tham số cho nó và cuối cùng trả về một giá trị duy nhất.

một ứng dụng trong lực lượng bán hàng là gì

Cú pháp của hàm này như sau:

TỔNG HỢP:

giảm (chức năng, trình tự)

THÍ DỤ:

từ nhập functools giảm bớt (lambda a, b: a + b, [23,21,45,98])

Ví dụ trên được mô tả trong hình ảnh sau:

giảm-trăn lambda-edureka

ĐẦU RA: 187

Kết quả hiển thị rõ ràng rằng tất cả các phần tử của danh sách là được thêm liên tục để trả về kết quả cuối cùng.

Với điều này, chúng ta sẽ kết thúc bài viết này về ‘Python Lambda’. Hy vọng bạn rõ ràng với tất cả những gì đã được chia sẻ với bạn. Đảm bảo rằng bạn luyện tập nhiều nhất có thể và hoàn nguyên trải nghiệm của mình.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog “Python Lambda” này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.

Để có kiến ​​thức chuyên sâu về Python cùng với các ứng dụng khác nhau của nó, bạn có thể đăng ký tham gia trực tiếp với hỗ trợ 24/7 và truy cập trọn đời.