Hướng dẫn are lambda functions faster python - hàm lambda có nhanh hơn python không

Biểu thức lambda là gì? & Nbsp; biểu thức Lambda là một cú pháp đặc biệt để tạo các hàm mà không có tên. Các chức năng này được gọi là chức năng Lambda. Các hàm Lambda này có thể có bất kỳ số lượng đối số nào nhưng chỉ có một biểu thức cùng với câu lệnh trả về ngầm. Biểu thức lambda trả về các đối tượng chức năng. Ví dụ: hãy xem xét biểu thức Lambda: & nbsp; & nbsp; 
A lambda expression is a special syntax to create functions without names. These functions are called lambda functions. These lambda functions can have any number of arguments but only one expression along with an implicit return statement. Lambda expressions return function objects. For Example consider the lambda expression:  

lambda (arguments) : (expression)

Biểu thức Lambda này xác định một hàm không tên, chấp nhận hai đối số và trả về tổng của hai đối số. Nhưng làm thế nào để chúng ta gọi một chức năng không tên? Hàm Lambda không tên được xác định ở trên có thể được gọi là: & nbsp; & nbsp;unnamed function, which accepts two arguments and returns the sum of the two arguments. But how do we call an unnamed function? The above defined unnamed lambda function can be called as:  

(lambda x, y: x + y)(1, 2)

Mã 1: & NBSP; 

Python3

(lambda x, y: x + y)(1, 2)
9
9
2
0
9
2
1
9
2
2
9
2
3
9
2
4
9
2
5__

11
4
11
5

11
6
9
2
0
9
2
1
9
2
2
9
2
3__

11
4
5
0

Output:  

9
2

Mặc dù nó không được khuyến khích, đối tượng hàm được trả về bởi biểu thức lambda có thể được gán cho một biến. Xem ví dụ dưới đây trong đó một tổng biến được gán một đối tượng hàm được trả về bởi biểu thức lambda. & Nbsp; & nbsp;
 

Python3

5
1
9
2
0
9
2
2
5
4
9
2
4
5
6

11
4
9
2
1
5
9
9
2
1
5
1
5
2

(lambda x, y: x + y)(1, 2)
9
9
2
0
5
1
9
2
1
5
7
9
2
9
5
9
11
3

11
4
11
5

Output:    

11

Công dụng phổ biến của biểu thức lambda: & nbsp; 

  • Vì các hàm Lambda là ẩn danh và không yêu cầu được gán tên, nên chúng thường được sử dụng để gọi các hàm (hoặc lớp) yêu cầu một đối tượng chức năng làm đối số. Xác định các chức năng riêng cho các đối số chức năng đó không được sử dụng bởi vì, định nghĩa hàm thường ngắn và chúng chỉ được yêu cầu một hoặc hai lần trong mã. Ví dụ: đối số chính của hàm sẵn có, Sắp xếp (). & Nbsp; & nbsp;used to call functions(or classes) which require a function object as an argument. Defining separate functions for such function arguments is of no use because, the function definition is usually short and they are required only once or twice in the code. For example, the key argument of the inbuilt function, sorted(). 
     

Python3

three
3
three
4

three
5
three
6
three
7
three
8
11
0

three
0
9
2
0
three
2___

(lambda x, y: x + y)(1, 2)
13
9
2
0
(lambda x, y: x + y)(1, 2)
15
(lambda x, y: x + y)(1, 2)
16
9
2
0
(lambda x, y: x + y)(1, 2)
18

11
4
(lambda x, y: x + y)(1, 2)
20

  • Output:
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]

Python3

three
0
9
2
0
three
2___

(lambda x, y: x + y)(1, 2)
13
9
2
0
(lambda x, y: x + y)(1, 2)
15
(lambda x, y: x + y)(1, 2)
16
9
2
0
(lambda x, y: x + y)(1, 2)
18

11
4
(lambda x, y: x + y)(1, 2)
55

  • Output:
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
  • (lambda x, y: x + y)(1, 2)
    44
    9
    2
    0
    (lambda x, y: x + y)(1, 2)
    15
    (lambda x, y: x + y)(1, 2)
    16__used whenever there is a need of repetitive function calls to reduce execution time. Some of the examples of such scenarios are the functions: map(), filter() and sorted(). For example, 
     

Python3

Các hàm Lambda là các hàm nội tuyến và do đó chúng được sử dụng bất cứ khi nào cần các cuộc gọi chức năng lặp đi lặp lại để giảm thời gian thực hiện. Một số ví dụ về các kịch bản như vậy là các hàm: map (), filter () và sort (). Ví dụ: & nbsp; & nbsp;

A

(lambda x, y: x + y)(1, 2)
79
9
2
0
(lambda x, y: x + y)(1, 2)
81
9
2
1
9
2
2
(lambda x, y: x + y)(1, 2)
84
9
2
6
(lambda x, y: x + y)(1, 2)
86

11
4
9
2
1
(lambda x, y: x + y)(1, 2)
89
(lambda x, y: x + y)(1, 2)
90

(lambda x, y: x + y)(1, 2)
91
9
2
0
(lambda x, y: x + y)(1, 2)
93
9
2
1
9
2
2
(lambda x, y: x + y)(1, 2)
96
(lambda x, y: x + y)(1, 2)
97
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
3

11
4
9
2
1
(lambda x, y: x + y)(1, 2)
89
9
2
13

9
2
06
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
9
9
2
08
9
2
09
Pros and Cons of lambda functions : 
Pros of lambda functions: 
 

  • & nbsp; & nbsp; ưu và nhược điểm của các hàm Lambda: & nbsp; Ưu điểm của các hàm Lambda: & nbsp; & nbsp;
  • Là ẩn danh, các hàm Lambda có thể dễ dàng được truyền mà không được gán cho một biến.
  • Các hàm Lambda là các hàm nội tuyến và do đó thực hiện tương đối nhanh hơn.
     

Python3

Nhiều lần chức năng Lambda làm cho mã dễ đọc hơn nhiều bằng cách tránh các bước nhảy logic gây ra bởi các cuộc gọi chức năng. Ví dụ: đọc các khối sau của mã. & Nbsp; & nbsp;

three
3
9
2
15

three
5
three
6
three
7
9
2
6
5
6
9
2
4__

9
2
23
9
2
0
9
2
8

9
2
26
9
2
0
11
0

9
2
29
9
2
0
11
2

11
4
9
2
36

  • Output:
5

Python3

9
2
32
9
2
0
9
2
34

11
4
9
2
53

  • Output:
5

Nhược điểm trên các hàm Lambda: & NBSP; 

  • Các hàm Lambda có thể chỉ có một biểu thức.
  • Các chức năng Lambda không thể có một tài liệu.
  • Nhiều lần chức năng Lambda làm cho mã khó đọc. Ví dụ: xem các khối mã được đưa ra dưới đây. & Nbsp; & nbsp;
     

Python3

three
3
9
2
55

three
5___

9
2
63
three
6
9
2
65

three
5
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
9
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
3
9
2
58__

9
2
63
three
6
9
2
76

three
5
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
9
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
3
9
2
58__

9
2
63
three
6
9
2
87

three
5
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
9
9
2
62

9
2
63
three
6
9
2
93

9
2
94
9
2
0
9
2
96
11
2
11
3

11
4
11
00

  • Output:
three

Python3

9
2
94
9
2
0
9
2
1
9
2
2
(lambda x, y: x + y)(1, 2)
96
9
2
65
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
3
9
2
58__

11
20
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
9
9
2
1
9
2
87
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
3
9
2
58__

11
4
11
00

  • Output:
three

& nbsp; & nbsp; lạm dụng các biểu thức lambda: & nbsp;
Misuse of Lambda expressions : 

  • Việc gán các biểu thức Lambda: Hướng dẫn theo phong cách Python chính thức PEP8, không khuyến khích việc gán các biểu thức Lambda như trong ví dụ dưới đây. The official python style guide PEP8, strongly discourages the assignment of lambda expressions as shown in the example below.
(lambda x, y: x + y)(1, 2)
0
  • Thay vào đó, nên viết một chức năng một lớp lót như,
(lambda x, y: x + y)(1, 2)
1
  • Mặc dù phương pháp thứ hai khuyến khích thực tế là các hàm Lambda là ẩn danh, nhưng nó cũng hữu ích cho các dấu vết trong quá trình gỡ lỗi. Chạy mã bên dưới để xem làm thế nào def làm cho Tracebacks hữu ích nhiều. & Nbsp; & nbsp;def makes tracebacks much useful. 
     

Python3

11
36
9
2
0
9
2
2
11
39
9
2
6
11
41
9
2
4
9
2
22

11
4
11
45

three
3
11
47
three
6
9
2
58
9
2
6
11
41
9
2
4
9
2
22

11
4
11
45

  • Kết thúc các biểu thức Lambda xung quanh các hàm: Nhiều lần, các biểu thức Lambda không cần thiết xung quanh các chức năng như hình dưới đây. Many times, lambda expressions are needlessly wrapped around functions as shown below.
(lambda x, y: x + y)(1, 2)
2
  • Mặc dù cú pháp trên là hoàn toàn chính xác, các lập trình viên phải hiểu rằng tất cả các chức năng trong Python có thể được truyền dưới dạng các đối tượng chức năng. Do đó, cùng một mã có thể (và nên) được viết là,
(lambda x, y: x + y)(1, 2)
3
  • Vượt qua các chức năng không cần thiết: Nhiều lần, các lập trình viên vượt qua các chức năng chỉ thực hiện một thao tác duy nhất. Xem mã sau. Many times, programmers pass functions which perform only a single operation. See the following code.
(lambda x, y: x + y)(1, 2)
4
  • Hàm Lambda được truyền ở trên chỉ thực hiện một thao tác duy nhất, thêm hai đối số. Kết quả tương tự có thể thu được bằng cách sử dụng tổng chức năng tích hợp, như được hiển thị bên dưới. & Nbsp; & nbsp;sum, as shown below. 
     
(lambda x, y: x + y)(1, 2)
5
  • Các lập trình viên nên tránh sử dụng các biểu thức lambda cho các hoạt động chung, bởi vì rất có thể có chức năng tích hợp cung cấp kết quả tương tự.

& nbsp; & nbsp; lạm dụng các biểu thức lambda: & nbsp;
Overuse of lambda expressions : 

  • Sử dụng Lambda cho các chức năng không tầm thường: Đôi khi, các chức năng đơn giản có thể không tầm thường. Xem mã bên dưới.Sometimes, simple functions can be non-trivial. See the code below.

Python3

Các

11
75
11
76
11
59
9
2
62
11
79
9
2
9
11
63
9
2
62
11
83
9
2
9
11
67
9
2
62
9
2
8
9
2
9
11
71
9
2
62
(lambda x, y: x + y)(1, 2)
03
11
74

11
75
11
76
11
59
9
2
62
11
97
9
2
9
11
63
9
2
62
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
01
9
2
9
11
67
9
2
62
(lambda x, y: x + y)(1, 2)
03
9
2
9
11
71
9
2
62
11
0
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
10

[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
11
9
2
0
(lambda x, y: x + y)(1, 2)
15
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
14

[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
15
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
16_______

[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
30
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
26
11
67
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
33
9
2
6
9
2
6
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
36
11
67
(lambda x, y: x + y)(1, 2)
12
9
2
6
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
26
11
71
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
42

11
4
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
44

  • Output:

[{'n': 2, 'r': 0,01, 't': 4, 'p': 100}, {'n': 5, 'r': 0,05, 't': 2, 'p': 120}, {'n': 1, 'r': 0,04, 't': 5, 'p': 150}] & nbsp; & nbsp;
 

  • Ở đây, chúng tôi đang sắp xếp các từ điển trên cơ sở lợi ích hỗn hợp. Bây giờ, xem mã được viết dưới đây, sử dụng def.def.

Python3

Các

[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
11
9
2
0
(lambda x, y: x + y)(1, 2)
15
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
14

11
75
11
76
11
59
9
2
62
11
97
9
2
9
11
63
9
2
62
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
01
9
2
9
11
67
9
2
62
(lambda x, y: x + y)(1, 2)
03
9
2
9
11
71
9
2
62
11
0
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
10

three
3
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
01

three
5___

11
4
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
44

  • Output:

[{'n': 2, 'r': 0,01, 't': 4, 'p': 100}, {'n': 5, 'r': 0,05, 't': 2, 'p': 120}, {'n': 1, 'r': 0,04, 't': 5, 'p': 150}] & nbsp; & nbsp;
 

  • Mặc dù cả hai mã đều làm điều tương tự, bản thứ hai sử dụng DEF dễ đọc hơn nhiều. Biểu thức được viết ở đây dưới Lambda có thể đơn giản, nhưng nó có ý nghĩa (công thức cho lợi ích hỗn hợp). Do đó, biểu thức là không tầm thường và xứng đáng với một cái tên. Sử dụng các biểu thức lambda cho các hàm không tầm thường làm giảm khả năng đọc của mã.def is much more readable. The expression written here under the lambda might be simple, but it has a meaning(formula for compound interest). Hence, the expression is non-trivial and deserves a name. Using lambda expressions for non-trivial functions reduces the readability of the code.
  • Sử dụng lambdas khi nhiều dòng sẽ giúp: nếu sử dụng hàm nhiều dòng làm cho mã dễ đọc hơn, sử dụng các biểu thức Lambda để giảm một số dòng mã không đáng giá. Ví dụ: xem mã bên dưới.If using a multiple line function makes the code more readable, using lambda expressions to reduce some lines of code is not worth it. For example, see the code below.

People = [('Sam', 'M', 18), ('Susan', 'F', 22), ('Joy', 'M', 21), ('Lucy', 'F', 12) ] & nbsp; sort_people = sort (con người, key = lambda x: x [1]) & nbsp; & nbsp;
sorted_people = sorted(people, key=lambda x: x[1]) 
 

  • Cũng xem mã sau sử dụng def.def.
(lambda x, y: x + y)(1, 2)
6
  • Xem cách giải nén Tuple trong khối thứ hai của mã làm cho nó dễ đọc và hợp lý hơn nhiều. Khả năng đọc của mã nên ưu tiên tối đa của một lập trình viên, làm việc trong môi trường hợp tác.
  • Sử dụng các biểu thức Lambda cho bản đồ và bộ lọc: LambDas được sử dụng rất phổ biến với MAP () và Filter () như được hiển thị. Lambdas are very commonly used with map() and filter() as shown.

Python3

three
0
9
2
0
three
2___

[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
50
9
2
0
(lambda x, y: x + y)(1, 2)
81
9
2
1
9
2
2
(lambda x, y: x + y)(1, 2)
84
9
2
6
(lambda x, y: x + y)(1, 2)
86

[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
58
9
2
0
(lambda x, y: x + y)(1, 2)
93
9
2
1
9
2
2
(lambda x, y: x + y)(1, 2)
84
three
8

11
4
9
2
1
(lambda x, y: x + y)(1, 2)
89
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
70

11
4
9
2
1
(lambda x, y: x + y)(1, 2)
89
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
74

  • Sau đây là một khối mã khác sử dụng các biểu thức máy phát để đạt được kết quả tương tự.

Python3

three
0
9
2
0
three
2___

[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
50
9
2
0
(lambda x, y: x + y)(1, 2)
81
9
2
1
9
2
2
(lambda x, y: x + y)(1, 2)
84
9
2
6
(lambda x, y: x + y)(1, 2)
86

[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
58
9
2
0
(lambda x, y: x + y)(1, 2)
93
9
2
1
9
2
2
(lambda x, y: x + y)(1, 2)
84
three
8

11
4
9
2
1
(lambda x, y: x + y)(1, 2)
89
[0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
70

Sau đây là một khối mã khác sử dụng các biểu thức máy phát để đạt được kết quả tương tự.

  • [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
    50
    9
    2
    0
    [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
    0__26
    9
    2
    58
    [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
    95
    9
    2
    58
    [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
    97
    [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
    98
     
  • [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
    58
    9
    2
    0
    [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
    0
    [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
    95
    9
    2
    58
    [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
    97
    The functions which accept other function objects as arguments are called higher order functions (i.e. map() and filter()), which are common in functional programming. As stated above, lambda expressions are commonly used as the function arguments of higher order functions. Compare the two code blocks shown below. 
    Using high order function reduce()
(lambda x, y: x + y)(1, 2)
7
  • 11
    4
    9
    2
    1
    (lambda x, y: x + y)(1, 2)
    89
    [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]
    74
(lambda x, y: x + y)(1, 2)
8
  • Không giống như Map () và Filter (), các biểu thức tạo là các tính năng mục đích chung của ngôn ngữ Python. Do đó, máy phát điện tăng cường khả năng đọc của mã. Trong khi, map () và filter () yêu cầu kiến ​​thức trước về các chức năng này. & Nbsp;

Lambda có nhanh hơn chức năng bình thường không?

Các hàm Lambda là các hàm nội tuyến và do đó thực hiện tương đối nhanh hơn.execute comparatively faster.

Lambda có nhanh hơn Def Python không?

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.Tạo một chức năng với Lambda nhanh hơn một chút so với việc tạo nó với Def.Creating a function with lambda is slightly faster than creating it with def .

Chức năng Lambda có nhanh hơn so với vòng lặp không?

Câu trả lơi con phụ thuộc vao nhiêu thư.Tôi đã thấy các trường hợp sử dụng Lambda chậm hơn và nó nhanh hơn.it depends. I have seen cases where using a lambda was slower and where it was faster.

Lambdas có chậm hơn các chức năng không?

Cần có rất ít hoặc không có sự khác biệt về thời gian cuộc gọi giữa hàm Lambda và hàm bình thường.Nếu có sự khác biệt, Lambda rất có thể sẽ chậm hơn vì mức độ gián tiếp bổ sung.If there is a difference, the lambda would most likely be slower because of an additional level of indirection.