Hướng dẫn advantages of lambda function in python - ưu điểm của hàm lambda trong python

Trong Python, chúng ta có thể đánh giá trực tiếp biểu thức toán học, vậy tại sao chúng ta đang sử dụng hàm Lambda? Và câu hỏi của tôi là lợi thế của việc sử dụng chức năng Lambda trong Python là gì. Ví dụ:

Nếu chúng ta muốn đánh giá biểu thức trong Python bằng cách sử dụng mà không có chức năng Lambda như thế này -

a=10
b=20
c=a+b
print[c]

output:30

Và nếu chúng ta muốn đánh giá biểu thức tương tự trong Python bằng cách sử dụng hàm Lambda, một cái gì đó như thế này -

c=lambda a,b:a+b
print[c[10,20]]

output:30

Vui lòng giải thích cho tôi lợi thế của việc sử dụng chức năng Lambda trong Python.

wjandrea

25.1k8 Huy hiệu vàng53 Huy hiệu bạc73 Huy hiệu đồng8 gold badges53 silver badges73 bronze badges

hỏi ngày 16 tháng 10 năm 2021 lúc 20:05Oct 16, 2021 at 20:05

8

Một biểu thức Lambda xác định một hàm; Ưu điểm so với tuyên bố

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4 là bạn không cần phải viết tên cho nó.

Một trường hợp sử dụng là khi bạn gửi một chức năng là đại biểu và chức năng của bạn rất đơn giản, bạn không cần phải mã hóa nó dưới dạng hàm

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4:

numbers = [1,2,3,4]

numbers.sort[key=lambda n: n % 10] # sort uses lambda function

Biểu thức lambda đánh giá một hàm; Bạn có thể gán nó cho một biến, nhưng PEP8 khuyên bạn nên sử dụng

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4:

Luôn sử dụng câu lệnh DEF thay vì câu lệnh gán liên kết biểu thức Lambda trực tiếp với định danh:

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x

Chepner

464K68 Huy hiệu vàng488 Huy hiệu bạc631 Huy hiệu Đồng68 gold badges488 silver badges631 bronze badges

Đã trả lời ngày 16 tháng 10 năm 2021 lúc 20:13Oct 16, 2021 at 20:13

Dani Herreradani Herreradani herrera

46.2K7 Huy hiệu vàng112 Huy hiệu bạc171 Huy hiệu đồng7 gold badges112 silver badges171 bronze badges

0

Các hàm Lambda rất quan trọng trong bối cảnh lập trình chức năng, tương tác chủ yếu với các giao diện như

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
7,
# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
8, v.v.

Lấy

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
8 làm ví dụ kinh điển, một trong những đối số của nó [cái đầu tiên] là một hàm. Trong các trường hợp đơn giản, khi chức năng sẽ không được tái sử dụng, việc viết là khá thiết thực

map[lambda x: ..., [...]]

thay vì đối tác

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4 của nó

def f[x]:
    ...
map[f, [...]]

Đã trả lời ngày 16 tháng 10 năm 2021 lúc 20:12Oct 16, 2021 at 20:12

PedropedroPedro

1.0467 Huy hiệu bạc15 Huy hiệu Đồng7 silver badges15 bronze badges

2

Từ khóa Lambda trong Python cung cấp một lối tắt để khai báo các chức năng ẩn danh nhỏ. Các chức năng Lambda hoạt động giống như các chức năng thông thường được khai báo với từ khóa DEF. Chúng có thể được sử dụng bất cứ khi nào các đối tượng chức năng được yêu cầu.

Chức năng Lambda, còn được gọi là chức năng ẩn danh, giống như hàm python thông thường nhưng có thể được xác định mà không có tên.

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

Chức năng Lambda, còn được gọi là chức năng ẩn danh, giống như hàm python thông thường nhưng có thể được xác định mà không có tên. Mặc dù các hàm bình thường được xác định bằng cách sử dụng từ khóa
# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4, các hàm ẩn danh được xác định bằng cách sử dụng từ khóa
map[lambda x: ..., [...]]
2. Tuy nhiên, chúng bị giới hạn trong một dòng biểu thức duy nhất. Họ có thể lấy các tham số mutliple như trong các chức năng thông thường.

2. Cú pháp chức năng Lambda

Cú pháp cho hàm
map[lambda x: ..., [...]]
2 được đưa ra bởi:
map[lambda x: ..., [...]]
4 Thông báo, 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ó tuyên bố
map[lambda x: ..., [...]]
5 thường có trong cú pháp hàm
# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4. Hàm & nbsp; sẽ chỉ đơn giản trả về giá trị biểu thức ngay cả khi không có câu lệnh
map[lambda x: ..., [...]]
5.

  1. Nội dung
  2. Chức năng Lambda trong Python là gì?
  3. Cú pháp chức năng Lambda
  4. Cần các chức năng Lambda
  5. Cách sử dụng các hàm Lambda: Ví dụ đơn giản
  6. Trong nội bộ, cả hai chức năng Lambda và def đều hoạt động giống hệt nhau
  7. Các hàm Lambda có thể có biểu thức 0 hoặc 1, không nhiều hơn.
  8. Các chức năng Lambda có thể được gọi ngay lập tức
  9. Có thể viết các chức năng thứ tự cao hơn bằng Lambda
  10. Các hàm Lambda chấp nhận tất cả các loại đối số, giống như hàm def bình thường
  11. Bạn có thể sử dụng hàm
    map[lambda x: ..., [...]]
    
    2 trong
    def f[x]:
        ...
    map[f, [...]]
    
    1
  12. Bạn cũng có thể sử dụng chức năng ____42 trong
    def f[x]:
        ...
    map[f, [...]]
    
    3
  13. Cách sử dụng chức năng Lambda để thao tác với DataFrame
  14. Sự kết luận

3. Cần 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 cách sử dụng từ khóa
      # Correct:
      def f[x]: return 2*x
      
      # Wrong:
      f = lambda x: 2*x
      
      4. Nhưng điều này không chính xác bởi vì, ngay cả các hàm được xác định với
      # Correct:
      def f[x]: return 2*x
      
      # Wrong:
      f = lambda x: 2*x
      
      4 cũng có thể được xác định trong một dòng. Nhưng nói chung, các hàm
      # Correct:
      def f[x]: return 2*x
      
      # Wrong:
      f = lambda x: 2*x
      
      4 được viết theo hơn 1 dòng.
    2. Chúng thường được sử dụng khi cần một hàm 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 chức năng khác như
      # Correct:
      def f[x]: return 2*x
      
      # Wrong:
      f = lambda x: 2*x
      
      7,
      # Correct:
      def f[x]: return 2*x
      
      # Wrong:
      f = lambda x: 2*x
      
      8 và
      def f[x]:
          ...
      map[f, [...]]
      
      9.,
      # Correct:
      def f[x]: return 2*x
      
      # Wrong:
      f = lambda x: 2*x
      
      8 and
      def f[x]:
          ...
      map[f, [...]]
      
      9.
    3. Sử dụng chức năng Lambda, bạn có thể xác định một hàm và gọi nó ngay lập tức vào cuối định nghĩa. Điều này có thể được thực hiện với các chức năng
      # Correct:
      def f[x]: return 2*x
      
      # Wrong:
      f = lambda x: 2*x
      
      4. functions.

Hãy cùng xem thêm về việc thực hiện 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

map[lambda x: ..., [...]]
2. Hãy để cố gắng xác định một hàm để tính toán các bình phương của các giá trị đã cho.

# calculate squares using lambda
squares = lambda x: x*x
print['Using lambda: ', squares[5]]
Using lambda:  25

Chúng ta cũng hãy nhìn vào cách thực hiện cùng một chức năng bằng cách sử dụng từ khóa

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4 và so sánh chúng.

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]

Output:

Using def:  25

Làm tương tự trong một dòng duy nhất.

c=lambda a,b:a+b
print[c[10,20]]
0
Using def:  25

Xem rằng trong khi sử dụng từ khóa

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4, chúng tôi sẽ trả về một giá trị nhất định
# calculate squares using lambda
squares = lambda x: x*x
print['Using lambda: ', squares[5]]
4. Trong trường hợp hàm
map[lambda x: ..., [...]]
2, biểu thức
# calculate squares using lambda
squares = lambda x: x*x
print['Using lambda: ', squares[5]]
4 sẽ được trả về mà không viết một câu lệnh trả về rõ ràng. Nói chung trong 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
# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4 và
map[lambda x: ..., [...]]
2. Cả hai đều là chức năng thực tế. Hãy cùng xem các loại của họ.

c=lambda a,b:a+b
print[c[10,20]]
2
c=lambda a,b:a+b
print[c[10,20]]
3

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

# calculate squares using lambda
squares = lambda x: x*x
print['Using lambda: ', squares[5]]
9.

5. Trong nội bộ, cả hai hàm Lambda và def đều hoạt động chính xác

Để kiểm tra cách chúng hoạt động trong nội bộ, hãy sử dụng từ khóa

Using lambda:  25
0.
Using lambda:  25
0 Từ khóa sẽ hiển thị một phiên bản có thể đọc của mã Bytepy Python cho phép kiểm tra các hướng dẫn.

c=lambda a,b:a+b
print[c[10,20]]
4
c=lambda a,b:a+b
print[c[10,20]]
5

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

c=lambda a,b:a+b
print[c[10,20]]
6
c=lambda a,b:a+b
print[c[10,20]]
5

Xem rằng quá trình được thực hiện bởi cả hai chức năng là giống hệt nhau. Vì vậy, không có sự khác biệt thực sự trong cách họ thực hiện. & nbsp;

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

  1. Không có biểu thức: Không chứa biểu thức, sẽ đưa ra cùng một đầu ra cho tất cả các đối số.
c=lambda a,b:a+b
print[c[10,20]]
8

Output:

Nhận khóa học Python hoàn thành miễn phí

Đối mặt với tình huống tương tự như mọi người khác?

Xây dựng sự nghiệp khoa học dữ liệu của bạn với trình độ được công nhận trên toàn cầu, được công nghiệp phê duyệt. Có được suy nghĩ, sự tự tin và các kỹ năng làm cho nhà khoa học dữ liệu trở nên có giá trị.

Nhận khóa học Python hoàn thành miễn phí

Xây dựng sự nghiệp khoa học dữ liệu của bạn với trình độ được công nhận trên toàn cầu, được công nghiệp phê duyệt. Có được suy nghĩ, sự tự tin và các kỹ năng làm cho nhà khoa học dữ liệu trở nên có giá trị.

c=lambda a,b:a+b
print[c[10,20]]
9
  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 ta không thể đặt nhiều hơn một biểu thức trong hàm Lambda.
numbers = [1,2,3,4]

numbers.sort[key=lambda n: n % 10] # sort uses lambda function
0
numbers = [1,2,3,4]

numbers.sort[key=lambda n: n % 10] # sort uses lambda function
1

7. Các chức năng Lambda có thể được gọi ngay lập tức

Bạn có thể triển khai chức năng Lambda mà không cần sử dụng tên biến. Bạn cũng có thể trực tiếp chuyển các giá trị đối số vào hàm

map[lambda x: ..., [...]]
2 ngay sau khi xác định nó bằng cách sử dụng paranthesis. Điều này không thể được thực hiện bằng cách sử dụng các hàm
# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4.

numbers = [1,2,3,4]

numbers.sort[key=lambda n: n % 10] # sort uses lambda function
2

Điều này không hoạt động với chức năng

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4.

numbers = [1,2,3,4]

numbers.sort[key=lambda n: n % 10] # sort uses lambda function
3

8. Có thể viết các chức năng thứ tự cao hơn bằng Lambda

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

numbers = [1,2,3,4]

numbers.sort[key=lambda n: n % 10] # sort uses lambda function
4

Xem rằng tôi đã vượt qua một hàm Lambda khác để tính toán hình vuông làm đối số cho biến

Using lambda:  25
5.

9. Chức năng Lambda Chấp nhận tất cả các loại đối số, giống như hàm def bình thường

Hàm

map[lambda x: ..., [...]]
2 hỗ trợ tất cả các loại đối số giống như hàm
# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
4 bình thường. 1. Đối số từ khóa:
Using lambda:  25
8 là một đối số trước một định danh [ví dụ: tên =] trong một cuộc gọi hàm. Đối số được đặt tên: Ví dụ1. Keyword Arguments:
Using lambda:  25
8 is an argument preceded by an identifier [e.g. name=] in a function call. Named Arguments: Example

numbers = [1,2,3,4]

numbers.sort[key=lambda n: n % 10] # sort uses lambda function
5

Danh sách biến các đối số: Ví dụ

numbers = [1,2,3,4]

numbers.sort[key=lambda n: n % 10] # sort uses lambda function
6

Danh sách biến các đối số từ khóa: Ví dụ

numbers = [1,2,3,4]

numbers.sort[key=lambda n: n % 10] # sort uses lambda function
7

2. Đối số vị trí:

Using lambda:  25
9 là một đối số không phải là đối số từ khóa.
Using lambda:  25
9 is an argument that is not a keyword argument.

numbers = [1,2,3,4]

numbers.sort[key=lambda n: n % 10] # sort uses lambda function
8

10. Bạn có thể sử dụng hàm
map[lambda x: ..., [...]]
2 trong
map[lambda x: ..., [...]]
9

Hàm

map[lambda x: ..., [...]]
9 được sử dụng để lọc một số không thể sử dụng [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. Hàm Lambda thường được sử dụng để xác định logic lọc và được truyền là đối số đầu tiên của
map[lambda x: ..., [...]]
9. Một đối tượng danh sách giống như có thể được chuyển làm đối số thứ hai cho hàm
# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
7.

numbers = [1,2,3,4]

numbers.sort[key=lambda n: n % 10] # sort uses lambda function
9

11. Bạn có thể sử dụng hàm
map[lambda x: ..., [...]]
2 trong
def f[x]:
    ...
map[f, [...]]
1

Hàm

def f[x]:
    ...
map[f, [...]]
1 áp dụng một hàm đã cho cho tất cả các ITME trong danh sách và trả về kết quả. Tương tự như
map[lambda x: ..., [...]]
9, chỉ cần chuyển chức năng Lambda và danh sách [hoặc bất kỳ sự khác biệt nào, như tuple] làm đối số.

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
0

12. Bạn cũng có thể sử dụng hàm
map[lambda x: ..., [...]]
2 trong
def f[x]:
    ...
map[f, [...]]
3

Hàm

def f[x]:
    ...
map[f, [...]]
3 thực hiện hoạt động lặp đi lặp lại trên các cặp phần tử trong danh sách. Truyền hàm
map[lambda x: ..., [...]]
2 và danh sách làm đối số cho hàm
def f[x]:
    ...
map[f, [...]]
3. Để sử dụng chức năng
def f[x]:
    ...
map[f, [...]]
3, bạn cần nhập
def f[x]:
    ...
map[f, [...]]
9 từ
Using def:  25
6 Librray.

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
1

Xem rằng hàm

def f[x]:
    ...
map[f, [...]]
3 lặp lại nhân lên trên các phần tử trong danh sách.
Using def:  25
8 và như vậy.

13. Cách sử dụng chức năng Lambda để thao tác với DataFrame

Bạn cũng có thể thao tác các cột của DataFrame bằng hàm

map[lambda x: ..., [...]]
2. Nó là một ứng cử viên tuyệt vời để sử dụng bên trong phương thức
c=lambda a,b:a+b
print[c[10,20]]
00 của DataFrame. Tôi sẽ cố gắng thêm một hàng mới trong DataFrame trong phần này làm ví dụ.

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
2

 Ngày thứ nhấtThứ haiNgày thứ baForth01
1 2 3 6
4 5 6 120

Khi được sử dụng với

c=lambda a,b:a+b
print[c[10,20]]
01, nó áp dụng chức năng Lambda cho mọi yếu tố của DataFrame.

# Correct:
def f[x]: return 2*x

# Wrong:
f = lambda x: 2*x
3

 Ngày thứ nhấtThứ haiNgày thứ baForth01
1 4 9 36
16 25 36 14400

Khi được sử dụng với
c=lambda a,b:a+b
print[c[10,20]]
01, nó áp dụng chức năng Lambda cho mọi yếu tố của DataFrame.

Sự kết luận

  1. Hy vọng bạn rõ ràng với các chức năng Lambda là gì và làm thế nào bạn có thể sử dụng nó trong các tình huống 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:
  2. Tính toán giai thừa của 10 bằng chức năng Lambda. Gợi ý: Sử dụng
    def f[x]:
        ...
    map[f, [...]]
    
    9.

Những lợi thế của việc sử dụng các hàm Lambda là gì?

Hiểu được lợi ích của AWS và AWS Lambda Serverless..
Lợi ích số 1: Chi phí giảm thiểu.....
Lợi ích #2: Khả năng mở rộng tự động.....
Lợi ích #3: Các trường hợp sử dụng giết người.....
Lợi ích #4: Phát triển lặp lại nhanh hơn.....
Lợi ích #5: Quản lý hoạt động ít hơn.....
Lợi ích #6: Hợp nhất chức năng.....
Lợi ích #7: Dịch vụ khách hàng hàng đầu trong ngành ..

Ưu điểm của biểu hiện Lambda trong Python là gì?

Từ khóa Lambda trong Python cung cấp một lối tắt để khai báo các chức năng ẩn danh nhỏ.Các chức năng Lambda hoạt động giống như các chức năng thông thường được khai báo với từ khóa DEF.Chúng có thể được sử dụng bất cứ khi nào các đối tượng chức năng được yêu cầu.provides a shortcut for declaring small anonymous functions. Lambda functions behave just like regular functions declared with the def keyword. They can be used whenever function objects are required.

Bài Viết Liên Quan

Chủ Đề