Bạn đang xem : cách sử dụng hàm lambda trong python

Hàm Lambda, còn được gọi là ‘Hàm ẩn danh’ giống như một hàm python thông thường nhưng có thể được định nghĩa mà không có tên.

1. Hàm Lambda trong Python là gì?

Hàm Lambda, còn được gọi là ‘Hàm ẩn danh’ giống như một hàm python thông thường nhưng có thể được định nghĩa mà không cần tên. Trong khi các hàm thông thường được xác định bằng từ khóa def , thì các hàm ẩn danh được xác định bằng từ khóa lambda . Tuy nhiên, chúng bị giới hạn trong một dòng biểu thức. Chúng có thể nhận nhiều tham số như trong các hàm thông thường.

2. Cú pháp hàm Lambda

Cú pháp cho hàm lambda được cung cấp bởi: lambda objects: expression Lưu ý, có thể có bất kỳ số lượng đối số nào nhưng chỉ có thể chứa một biểu thức duy nhất. Không có câu lệnh return nào thường có trong cú pháp hàm def . Hàm sẽ chỉ trả về giá trị biểu thức ngay cả khi không có câu lệnh return .

Nội dung

3. Cần cho các chức năng Lambda

Có ít nhất 3 lý do:

    1. Các hàm lambda giảm số lượng dòng mã khi so sánh với hàm python bình thường được xác định bằng từ khóa def . Nhưng điều này không hoàn toàn đúng vì ngay cả các hàm được định nghĩa bằng def cũng có thể được định nghĩa trong một dòng. Nhưng nhìn chung, các hàm def được viết bằng nhiều hơn 1 dòng.
    2. Chúng thường được sử dụng khi một hàm cần thiết tạm thời trong một khoảng thời gian ngắn, thường được sử dụng bên trong một hàm khác, chẳng hạn như filter

      ,

      map < / code>

      giảm

      .

    3. Sử dụng hàm lambda, bạn có thể định nghĩa một hàm và gọi nó ngay lập tức ở cuối định nghĩa. Điều này không thể thực hiện được với các hàm def

      .

Hãy xem thêm về cách triển khai chúng trong python.

4. Cách sử dụng các hàm lambda: Ví dụ đơn giản

Bạn không cần chỉ định tên cho hàm như đã thảo luận ở trên về cú pháp của hàm lambda . Hãy thử xác định một hàm để tính bình phương của các giá trị đã cho.

  # tính toán hình vuông bằng cách sử dụng 

lambda

Square =

lambda

x: x * x

print

('Sử dụng

lambda

:', square (

5 < / p>))

  

Sử dụng

lambda:

25

Hãy cũng xem xét cách thực hiện chức năng tương tự bằng từ khóa def và so sánh chúng.

  # tính bình phương bằng cách sử dụng 

def

def

square_def

(x):

trả về

x * x print (

'Sử dụng

def

:', Square_def (

5

))

Đầu ra:

  Sử dụng 

def

: 25

Làm tương tự trên một dòng.

  # tính bình phương bằng cách sử dụng 

def

trong

một

dòng

def

square_def

(x): trả về x * x print ('Sử dụng

def

:', square_def (

5 < / p>))

  Sử dụng 

def

: 25

Hãy thấy rằng trong khi sử dụng từ khóa def , chúng tôi đang trả về một giá trị nhất định x * x . Trong trường hợp của hàm lambda , biểu thức x * x sẽ được trả về mà không cần viết câu lệnh trả về rõ ràng. Nói chung trong việc sử dụng bình thường, không có nhiều sự khác biệt trong việc sử dụng từ khóa def lambda . Trên thực tế, cả hai đều là các chức năng. Hãy xem các loại của họ.

  # Loại
print (

type

(

square

)) print (

type

(

square_def

))
  & lt; 

class

'function'

& gt; & lt;

class

'function'

& gt;

Cả hai đều thuộc về lớp function .

5. Bên trong, cả hai hàm lambda và def hoạt động hoàn toàn giống nhau

Để kiểm tra cách chúng hoạt động nội bộ, hãy sử dụng từ khóa dis . Từ khóa dis sẽ hiển thị phiên bản có thể đọc được của python bytecode cho phép kiểm tra các hướng dẫn.

  # Hướng dẫn mã Bytecode 

của chức năng

lambda

nhập

dis dis.dis (hình vuông)
  

2

0

LOAD_FAST

0 (x)

2

LOAD_FAST

0

(x)

4

BINARY_MULTIPLY

6

RETURN_VALUE

Bytecode cho hàm `def` thông thường.

  # Hướng dẫn mã Bytecode của 

def

chức năng

nhập

dis dis.dis (square_def)
  

2

0

LOAD_FAST

0 (x)

2

LOAD_FAST

0

(x)

4

BINARY_MULTIPLY

6

RETURN_VALUE

Thấy rằng quá trình được thực hiện bởi cả hai chức năng là hoàn toàn giống nhau. Vì vậy, không có sự khác biệt thực sự trong cách chúng thực thi.

6. Các hàm lambda có thể có 0 hoặc 1 biểu thức, không nhiều hơn.

  1. Không có biểu thức: không chứa biểu thức nào, sẽ cung cấp cùng một đầu ra cho tất cả các đối số.
  x = lambda: 

"hello world"

print

(x ()

)

Đầu ra:

Bạn muốn trở nên tuyệt vời trong ML?

Xin chào! Tôi là Selva, và tôi rất vui khi bạn đang đọc nó!

Giờ đây, bạn có thể từ một người mới bắt đầu hoàn chỉnh trở thành chuyên gia Khoa học Dữ liệu, với khóa đào tạo Khoa học Dữ liệu miễn phí từ đầu đến cuối của tôi.

Không có sự thay đổi giữa nhiều sách và khóa học. Hy vọng vào cách hiệu quả nhất để trở thành chuyên gia. (Bao gồm sổ ghi chép có thể tải xuống, các dự án portfolio và bài tập)

Bắt đầu miễn phí với khóa học đầu tiên 'Cơ sở của Học máy' - một định hướng toàn diện về lĩnh vực ML là gì.

Đăng ký khóa học Nền tảng của ML (MIỄN PHÍ)

Đã bán? Bắt đầu với Con đường làm chủ ML hoàn chỉnh

  

xin chào thế giới

  1. Biểu thức đơn: Chúng có thể chứa một biểu thức hoặc không có biểu thức. Chúng tôi không thể đặt nhiều hơn một biểu thức trong một hàm lambda.
  

new

_ single

= lambda x: (x%

2

) print (

new

_ single

(

10

))
  

0

7. Các hàm Lambda có thể được gọi ngay lập tức

Bạn có thể triển khai một hàm lambda mà không cần sử dụng tên biến. Bạn cũng có thể chuyển trực tiếp các giá trị đối số vào hàm lambda ngay sau khi xác định nó bằng cách sử dụng paranthesis. Không thể thực hiện điều này bằng các hàm def .

  (

lambda

x

,

y

:

x * y

) (

5

,

7

) # & gt; 7

Điều này không hoạt động với hàm def .

 

def

nhân

(x, y)

:

return

x * y (

5

, < p class = "hljs-number"> 7

)

8. Có thể viết các hàm bậc cao hơn bằng lambda

Một hàm lambda có thể lấy một hàm khác làm đối số. Hãy xem một ví dụ về các hàm lambda lồng nhau, một hàm lambda bên trong một hàm lambda khác.

 # Xác định một hàm lambda 

có thể lấy một lambda khác

chức năng

(func1). high_order = lambda x, lmbfunc: x * lmbfunc (x) # Hàm lambda

bên trong được

định nghĩa khi gọi high_order. high_order (10, lambda x:

x

* x) # & gt; 1000

Thấy rằng tôi đã chuyển một hàm lambda khác để tính bình phương làm đối số cho biến high_order func.

9. Các hàm lambda chấp nhận tất cả các loại đối số, giống như hàm def thông thường

Hàm

lambda hỗ trợ tất cả các loại đối số giống như hàm def thông thường. 1. Đối số từ khóa: đối số từ khóa là đối số đứng trước mã định danh (ví dụ: tên =) trong lệnh gọi hàm. Đối số được đặt tên: Ví dụ

  (

lambda

x

,

y = 3

,

z = 5:

x * y * z

) (

7

) # & gt; 105

Danh sách các đối số có thể thay đổi: Ví dụ

  (

lambda

x

,

y = 3

,

z = 5:

x * y * z

) (

x = 7

) # & gt; 105

Danh sách các đối số từ khóa có thể thay đổi: Ví dụ

  (

lambda

* args

:

sum

(args)) (

3

,

5

,

7

) # & gt; 15

2. Đối số vị trí: đối số vị trí là đối số không phải là đối số từ khóa.

  (

lambda

x

,

y

,

z

:

x * y * z

) (

3

,

5

,

7

) # & gt; 105

10. Bạn có thể sử dụng hàm lambda trong filter ()

Hàm

filter () được sử dụng để lọc một đối tượng có thể lặp lại nhất định (danh sách như đối tượng) bằng cách sử dụng một hàm khác xác định logic lọc. Một hàm lambda thường được sử dụng để xác định logic lọc và được chuyển làm đối số đầu tiên của filter () . Một đối tượng có thể lặp lại như đối tượng danh sách được chuyển làm đối số thứ hai cho hàm filter .

  # Sử dụng lambda bên trong 

filter

chức năng

mylist = [

2

,

3

,

4

,

5

,

6

,

7

, < p class = "hljs-number"> 8

,

9

,

10

] list_new =

list

(

filter

(lambda

x

: (

x

%

2

==

0

), danh sách của tôi))

in

(list_new) # & gt; [2, 4, 6, 8, 10]

11. Bạn có thể sử dụng hàm lambda trong map ()

Hàm

map () áp dụng một hàm đã cho cho tất cả các chủ đề trong danh sách và trả về kết quả. Tương tự như filter () , chỉ cần chuyển hàm lambda và danh sách (hoặc bất kỳ tệp nào có thể lặp lại, như tuple) làm đối số.

  # using 

lambda

hàm bên trong

map

mylist = [

2

,

3

,

4

,

5

,

6

,

7

, < p class = "hljs-number"> 8

,

9

,

10

] list_new = list (

map

(

lambda

x: x%

2

, mylist))

print

(list_new) # & gt; [0, 1, 0, 1, 0, 1, 0, 1, 0]

12. Bạn cũng có thể sử dụng hàm lambda trong Reduce ()

Hàm

Reduce () thực hiện một thao tác lặp lại trên các cặp phần tử trong danh sách. Chuyển lambdaHàm và danh sách làm đối số cho hàm Reduce () . Để sử dụng hàm Reduce () , bạn cần nhập Reduce từ functools librray.

 
từ functools 

nhập

giảm

list1 = [

1

,

2

,

3

,

4

,

5

,

6

, < p class = "hljs-number"> 7

,

8

,

9

] sum =

giảm

((lambda x, y: x + y), list1)

in

(tổng hợp) # & gt; 45

Thấy rằng hàm Reduce () nhân lên lặp lại các phần tử trong danh sách. tức là 1 + 2, 1 + 2 + 3, 1 + 2 + 3 + 4 , v.v.

13. Cách sử dụng hàm lambda để thao tác với Dataframe

Bạn cũng có thể thao tác các cột của khung dữ liệu bằng cách sử dụng hàm lambda . Nó là một ứng cử viên tuyệt vời để sử dụng bên trong phương pháp apply của khung dữ liệu. Tôi sẽ cố gắng thêm một hàng mới vào khung dữ liệu trong phần này làm ví dụ.

  nhập gấu trúc dưới dạng pd
df = pd. 

DataFrame

([[

1

,

2 < / p>,

3

], [

4

,

5 < / p>,

6

]], cột = [

'Đầu tiên'

,

'Thứ hai'

,

'Thứ ba'

]) df [

'Forth'

] = df.apply (lambda row: row [

'First'

] * hàng [

'Second'

] * row [

'Third'

], axis =

1

) df

Ngày thứ nhất
Thứ hai
Ngày thứ ba
Forth


1
2
3
6

1
4
5
6
120

Khi được sử dụng với df.appplymap () , nó áp dụng hàm lambda cho mọi phần tử của khung dữ liệu.

  

df

= df.applymap (lambda x: x * x) df

Ngày thứ nhất
Thứ hai
Ngày thứ ba
Forth


1
4
9
36

1
16
25
36
14400

Kết luận

Hy vọng bạn đã hiểu rõ các hàm lambda là gì và cách bạn có thể sử dụng nó trong các trường hợp khác nhau. Hãy thử các bài tập sau để kiểm tra sự hiểu biết của bạn:

  1. Tính giai thừa của 10 bằng hàm lambda. Gợi ý: Sử dụng Reduce .
  2. Viết một hàm để lọc tất cả các bội số của 2 và 3 khỏi danh sách: [1,2,3,4,5,6,7,8,9,10,11,12]


Xem thêm những thông tin liên quan đến chủ đề cách sử dụng hàm lambda trong python

LẬP TRÌNH PYTHON CƠ BẢN #13: HÀM LAMBDA LÀ GÌ ???

  • Tác giả: Thành IT
  • Ngày đăng: 2021-07-14
  • Đánh giá: 4 ⭐ ( 8372 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Welcome to my Channel !
    Trong video này các bạn sẽ biết về hàm lambda!
    ⚡ Subcribe tại đây : https://goo.gl/OKBggH

    ⚡Trang Github của mình: https://github.com/ThanhLa1802

    ⚡ Kiểm tra cấu hình máy tính: https://youtu.be/ZSPMF7KWuVk

    ⚡ Fix lỗi game: https://youtu.be/pDEJt_1Ovxo

    ⚡ FanPage Dragon Ball: https://www.facebook.com/DBX.Vietnam/
    --------------------------------------------------------------------
    ⚡ Cấu hình máy mình:
    - GPU: RTX 3060 Palit
    - CPU: AMD Ryzen 7 2700
    - Main: MSI B450 Tomahawk
    - SSD GLOWAY 240GB - NVME 500 GB
    - Memory: 16 GB RAM 2400 MHZ)
    - Operating system: Microsoft Windows 10 Pro
    - PSU: Antec 1000W

    ⭐️ Timestamps ⭐️
    00:00 | Giải thích hàm lambda
    02:45 | Ứng dụng hàm lambda

    ⭐️ Tags ⭐️
    Thành IT
    Lập trình
    Thủ thuật
    Hàm lambda
    Python Basic

    ⭐️ Hashtags ⭐️
    ThanhIT Laptrinh Python Lambda

Tìm hiểu cách sử dụng Lambda Function trong Python

  • Tác giả: itzone.com.vn
  • Đánh giá: 5 ⭐ ( 8619 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: The ITZone platform Vietnam is the community for anyone interested in news, training seminars, presentations etc in the IT industry

Python Lambda Function

  • Tác giả: yeulaptrinh.vn
  • Đánh giá: 4 ⭐ ( 9787 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Hàm lambda trong Python

  • Tác giả: freetuts.net
  • Đánh giá: 5 ⭐ ( 6340 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài viết này chúng ta sẽ tìm hiểu hàm lambda trong Python, nó còn được gọi là hàm ẩn danh trong Python. Đây là cách tạo hàm ngắn gọn và không có tên.

Lambda Function(Hàm ẩn danh) trong Python

  • Tác giả: viblo.asia
  • Đánh giá: 5 ⭐ ( 5837 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Chào các bạn trong bài viết này, mình sẽ giới thiệu với các bạn về Lambda Function còn được gọi là các hàm ẩn danh.Mình sẽ giải thích cho các bạn hiểu về khái niệm của chúng là gì, cú pháp và cách xử...

How to Use Python Lambda Functions – Real Python

  • Tác giả: realpython.com
  • Đánh giá: 4 ⭐ ( 8124 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: In this step-by-step tutorial, you'll learn about Python lambda functions. You'll see how they compare with regular functions and how you can use them in accordance with best practices.

40+ bài học Python cơ bản

  • Tác giả: nguyenvanhieu.vn
  • Đánh giá: 4 ⭐ ( 9655 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Chuyên mục của bài viết hôm nay tìm hiểu về hàm Lambda trong Python. Chúng tôi sẽ trình bày cú pháp cơ bản của hàm Lambda và đi qua một số ví dụ để làm quen

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  LinkedList Tất cả các phương thức trong Java với các ví dụ - các phương thức danh sách liên kết trong java

By ads_php