HomeLập trìnhPythonCách chức năng...

Cách chức năng Python Lambda hoạt động – Giải thích bằng các ví dụ


Một trong những điều tuyệt vời về Python là nó nói chung là một trong những ngôn ngữ lập trình trực quan nhất hiện có. Tuy nhiên, một số khái niệm có thể khó nắm bắt và hiểu. Hàm lambda là một trong số đó.

Tôi đã từng ở đó. Khi tôi mới bắt đầu học Python, tôi đã bỏ qua hàm lambda vì nó không rõ ràng đối với tôi. Nhưng với thời gian, tôi bắt đầu hiểu nó. Vì vậy, đừng lo lắng – nếu bạn cũng đang phải vật lộn với vấn đề này, tôi sẽ hỗ trợ bạn.

Hướng dẫn này sẽ cho bạn biết hàm lambda là gì, khi nào nên sử dụng hàm này và chúng ta sẽ xem xét một số trường hợp sử dụng phổ biến trong đó hàm lambda thường được áp dụng. Nếu không có thêm ado chúng ta hãy bắt đầu.

Hàm Lambda là gì?

Các hàm lambda tương tự như các hàm do người dùng định nghĩa nhưng không có tên. Chúng thường được gọi là các chức năng ẩn danh.

Các hàm lambda hoạt động hiệu quả bất cứ khi nào bạn muốn tạo một hàm chỉ chứa các biểu thức đơn giản – nghĩa là các biểu thức thường là một dòng của câu lệnh. Chúng cũng hữu ích khi bạn muốn sử dụng chức năng này một lần.

Cách xác định hàm Lambda

Bạn có thể định nghĩa một hàm lambda như thế này:

lambda argument(s) : expression
  1. lambda là một từ khóa trong Python để xác định chức năng ẩn danh.
  2. argument(s) là một trình giữ chỗ, đó là một biến sẽ được sử dụng để giữ giá trị mà bạn muốn chuyển vào biểu thức hàm. Một hàm lambda có thể có nhiều biến tùy thuộc vào những gì bạn muốn đạt được.
  3. expression là mã bạn muốn thực thi trong hàm lambda.
Đọc thêm  Trình tự thoát trong Python

Lưu ý rằng hàm ẩn danh không có từ khóa trả về. Điều này là do hàm ẩn danh sẽ tự động trả về kết quả của biểu thức trong hàm sau khi nó được thực thi.

Hãy xem một ví dụ về hàm lambda để xem nó hoạt động như thế nào. Chúng ta sẽ so sánh nó với một hàm thông thường do người dùng định nghĩa.

Giả sử tôi muốn viết một hàm trả về gấp đôi số tôi truyền vào. Chúng ta có thể định nghĩa một hàm do người dùng định nghĩa như sau:

def f(x):
  return x * 2

f(3)
>> 6

Bây giờ cho một chức năng lambda. Chúng ta sẽ tạo nó như thế này:

lambda x: x * 3

Như tôi đã giải thích ở trên, hàm lambda không có từ khóa trả về. Kết quả là, nó sẽ tự trả về kết quả của biểu thức. Dấu x trong đó cũng đóng vai trò là trình giữ chỗ cho giá trị được chuyển vào biểu thức. Bạn có thể thay đổi nó thành bất cứ điều gì bạn muốn.

Bây giờ nếu bạn muốn gọi một hàm lambda, bạn sẽ sử dụng một phương pháp được gọi là gọi hàm ngay lập tức. Trông như thế này:

(lambda x : x * 2)(3)

>> 6

Lý do cho điều này là vì hàm lambda không có tên mà bạn có thể gọi (tên ẩn danh), bạn cần gửi kèm theo toàn bộ câu lệnh khi muốn gọi nó.

Khi nào bạn nên sử dụng hàm Lambda?

Bạn nên sử dụng hàm lambda để tạo các biểu thức đơn giản. Ví dụ: các biểu thức không bao gồm các cấu trúc phức tạp như if-else, vòng lặp for, v.v.

Đọc thêm  Câu lệnh If Else trong Python – Giải thích về câu lệnh có điều kiện

Vì vậy, ví dụ, nếu bạn muốn tạo một hàm với vòng lặp for, bạn nên sử dụng hàm do người dùng xác định.

Các trường hợp sử dụng phổ biến cho Hàm Lambda

Cách sử dụng Hàm Lambda với Iterables

Một iterable về cơ bản là bất cứ thứ gì bao gồm một loạt các giá trị, chẳng hạn như ký tự, số, v.v.

Trong Python, iterables bao gồm chuỗi, danh sách, từ điển, phạm vi, bộ dữ liệu, v.v. Khi làm việc với iterables, bạn có thể sử dụng các hàm lambda kết hợp với hai hàm phổ biến: filter()map().

Filter()

Khi muốn tập trung vào các giá trị cụ thể trong một lần lặp, bạn có thể sử dụng chức năng bộ lọc. Sau đây là cú pháp của hàm lọc:

filter(function, iterable)

Như bạn có thể thấy, một hàm lọc yêu cầu một hàm khác chứa biểu thức hoặc các thao tác sẽ được thực hiện trên iterable.

Ví dụ: giả sử tôi có một danh sách như [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]. Bây giờ, giả sử rằng tôi chỉ quan tâm đến những giá trị trong danh sách có số dư bằng 0 khi chia cho 2. Tôi có thể sử dụng filter() và một hàm lambda.

Đầu tiên, tôi sẽ sử dụng hàm lambda để tạo biểu thức mà tôi muốn dẫn xuất như thế này:

lambda x: x % 2 == 0

Sau đó, tôi sẽ chèn nó vào chức năng lọc như thế này:

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filter(lambda x: x % 2 == 0, list1)

>> <filter at 0x1e3f212ad60> # The result is always filter object so I will need to convert it to list using list()

list(filter(lambda x: x % 2 == 0, list1))
>> [2, 4, 6, 8, 10]

Map()

Bạn sử dụng map() chức năng bất cứ khi nào bạn muốn sửa đổi mọi giá trị trong một lần lặp.

map(function, iterable)

Ví dụ: giả sử tôi muốn tăng tất cả các giá trị trong danh sách bên dưới lên lũy thừa của 2. Tôi có thể dễ dàng làm điều đó bằng cách sử dụng các hàm lambda và map như sau:

list1 = [2, 3, 4, 5]

list(map(lambda x: pow(x, 2), list1))
>> [4, 9, 16, 25]

Dòng gấu trúc

Một nơi khác mà bạn sẽ sử dụng hàm lambda là trong khoa học dữ liệu khi tạo khung dữ liệu từ Pandas. Một chuỗi là một cột khung dữ liệu. Bạn có thể thao tác tất cả các giá trị trong một chuỗi bằng cách sử dụng hàm lambda.

Đọc thêm  Tìm hiểu cách xây dựng bot đầu tiên của bạn trong Telegram bằng Python

Ví dụ: nếu tôi có khung dữ liệu với các cột sau và muốn chuyển đổi các giá trị trong cột tên thành chữ thường, tôi có thể thực hiện bằng cách sử dụng hàm áp dụng Pandas và hàm lambda Python như sau:

import pandas as pd

df = pd.DataFrame(
    {"name": ["IBRAHIM", "SEGUN", "YUSUF", "DARE", "BOLA", "SOKUNBI"],
     "score": [50, 32, 45, 45, 23, 45]
    }
)
hình ảnh
df["lower_name"] = df["name"].apply(lambda x: x.lower())

Hàm áp dụng sẽ áp dụng từng phần tử của chuỗi cho hàm lambda. Sau đó, hàm lambda sẽ trả về một giá trị cho từng phần tử dựa trên biểu thức bạn đã chuyển cho nó. Trong trường hợp của chúng tôi, biểu thức là viết thường từng phần tử.

hình ảnh

Phần kết luận

Trong hướng dẫn này, bạn đã tìm hiểu kiến ​​thức cơ bản về hàm lambda và cách bạn có thể áp dụng hàm này một cách phổ biến. Cảm ơn bạn đã dành thời gian của bạn để đọc này.



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status