Nếu bạn mới bắt đầu với Python, bạn có thể khó hiểu khi hiểu lambda là gì. Hãy học cách định nghĩa và thực thi lambdas.

Bạn đang xem : lambda trong python là gì

Nếu bạn mới bắt đầu với Python, có thể hơi khó hiểu khi hiểu lambda là gì. Hãy xem liệu tôi có thể làm rõ một số điều ngay lập tức hay không.

Một lambda còn được gọi là một hàm ẩn danh và đó là bởi vì lambda không có tên. Để xác định lambda trong Python, bạn sử dụng từ khóa lambda theo sau là một hoặc nhiều đối số, dấu hai chấm (:) và một biểu thức duy nhất.

Chúng ta sẽ bắt đầu với một ví dụ đơn giản về hàm lambda để làm quen với cú pháp của nó và sau đó chúng ta sẽ xem xét cách một hàm lambda trong Python phù hợp với các tình huống khác nhau.

Để thực hành tất cả các ví dụ, chúng ta sẽ sử dụng trình bao tương tác Python.

Hãy bắt đầu!

Cách sử dụng Lambda trong Python

Hãy bắt đầu với cú pháp của hàm lambda.

Một hàm lambda bắt đầu bằng từ khóa lambda theo sau là danh sách các đối số được phân tách bằng dấu phẩy. Phần tử tiếp theo là dấu hai chấm (:) theo sau là biểu thức duy nhất .

  lambda & lt; đối số & gt; : & lt; expression & gt;  

Như bạn có thể thấy, một hàm lambda có thể được định nghĩa trong một dòng .

Hãy xem một lambda rất đơn giản nhân số x (đối số) với 2:

  lambda x: 2 * x  

Đây là những gì sẽ xảy ra nếu tôi xác định lambda này trong Python shell:

  & gt; & gt; & gt; lambda x: 2 * x
& lt; hàm & lt; lambda & gt; tại 0x101451cb0 & gt;  

Tôi nhận lại đối tượng hàm . Điều thú vị là khi tôi xác định lambda, tôi không cần câu lệnh return như một phần của biểu thức.

Điều gì sẽ xảy ra nếu tôi đưa câu lệnh return vào trong biểu thức?

  & gt; & gt; & gt; lambda x: trả về 2 * x
  Tệp "& lt; stdin & gt;", dòng 1
    lambda x: trả về 2 * x
                    ^
SyntaxError: cú pháp không hợp lệ  

Chúng tôi nhận được lỗi cú pháp. Vì vậy, không cần bao gồm return trong lambda.

Cách gọi một hàm Lambda trong Python

Chúng ta đã biết cách định nghĩa lambda, nhưng chúng ta có thể gọi nó như thế nào?

Đầu tiên, chúng ta sẽ thực hiện mà không gán đối tượng hàm cho một biến. Để làm điều đó, chúng ta chỉ cần sử dụng dấu ngoặc đơn.

  (lambda x: 2 * x) ( 2)  

Chúng ta sẽ bao quanh biểu thức lambda bằng các dấu ngoặc đơn, theo sau là dấu ngoặc đơn bao quanh các đối số mà chúng ta muốn chuyển đến lambda.

Đây là kết quả khi chúng ta chạy nó :

  & gt; & gt; & gt; (lambda x: 2 * x) (2)
4  

Tuyệt vời!

Chúng tôi cũng có một tùy chọn khác. Chúng ta có thể gán đối tượng hàm do hàm lambda trả về cho một biến, sau đó gọi hàm bằng tên biến.

  & gt; & gt; & gt; nhân = lambda x: 2 * x
& gt; & gt; & gt; nhân (2)
4  

Tôi cảm thấy điều này đi ngược lại với ý tưởng không đặt tên cho lambda, nhưng điều này đáng để biết…

Trước khi tiếp tục đọc bài viết này, hãy đảm bảo bạn hãy thử tất cả các ví dụ mà chúng tôi đã thấy cho đến nay để làm quen với lambdas.

Tôi vẫn nhớ lần đầu tiên tôi bắt đầu đọc về lambdas, tôi đã hơi bối rối. Vì vậy, đừng lo lắng nếu bạn cũng cảm thấy như vậy ngay bây giờ 🙂

Truyền nhiều đối số cho một hàm Lambda

Trong phần trước, chúng ta đã biết cách định nghĩa và thực thi một hàm lambda.

Chúng ta cũng đã thấy rằng lambda có thể có một hoặc nhiều đối số, hãy xem một ví dụ có hai đối số.

Tạo một lambda nhân các đối số x và y:

  lambda x, y: x * y  

Như bạn có thể thấy, hai đối số được phân tách bằng dấu phẩy.

  & gt; & gt; & gt; (lambda x, y: x * y) (2,3)
6  

Như mong đợi, đầu ra trả về số chính xác (2 * 3).

Một lambda là một IIFE (Biểu thức hàm được gọi ngay lập tức) . Về cơ bản, đó là một cách để nói rằng một hàm lambda được thực thi ngay sau khi nó được định nghĩa.

Sự khác biệt giữa một Hàm Lambda và một Hàm thông thường

Trước khi tiếp tục xem cách chúng ta có thể sử dụng lambda trong các chương trình Python của mình, điều quan trọng là phải xem cách một hàm Python thông thường và một lambda có liên quan với nhau.

Hãy lấy ví dụ trước của chúng ta:

  lambda x, y: x * y  

Chúng tôi cũng có thể viết nó như một hàm thông thường bằng cách sử dụng từ khóa def :

  def Nhân (x, y):
    return x * y  

Bạn nhận thấy ngay ba điểm khác biệt so với biểu mẫu lambda:

  1. Khi sử dụng từ khóa def, chúng ta phải chỉ định tên cho hàm của mình .
  2. Hai đối số được bao quanh bởi dấu ngoặc đơn.
  3. Chúng tôi trả về kết quả của hàm bằng cách sử dụng return câu lệnh.

Việc gán hàm lambda của chúng ta cho một biến là tùy chọn (như đã đề cập trước đó):

  Multi_lambda = lambda x, y: x * y  

Hãy so sánh các đối tượng cho hai hàm này:

  & gt; & gt; & gt; def nhân (x, y):
... trả về x * y
...
& gt; & gt; & gt; nhân_lambda = lambda x, y: x * y
& gt; & gt; & gt; nhân
& lt; hàm nhân với 0x101451d40 & gt;
& gt; & gt; & gt; nhân_lambda
& lt; hàm & lt; lambda & gt; tại 0x1014227a0 & gt;  

Ở đây chúng ta có thể thấy sự khác biệt: hàm được xác định bằng từ khóa def được xác định bằng tên “nhân” trong khi hàm lambda được xác định bằng tên chung & lt; lambda & gt; nhãn.

Và hãy xem hàm type () trả về khi áp dụng cho cả hai hàm:

  & gt; & gt; & gt; gõ (nhân)
& lt; class 'function' & gt;
& gt; & gt; & gt; gõ (Multi_lambda)
& lt; class 'function' & gt;  

Vì vậy, kiểu của hai hàm là giống nhau.

Tôi có thể sử dụng If Else trong Python Lambda không?

Không biết tôi có thể sử dụng không? câu lệnh if else trong hàm lambda…

  lambda x: x if x & gt; 2 else 2 * x  

Lambda này sẽ trả về x nếu x lớn hơn 2, nếu không nó sẽ trả về x nhân với 2.

Trước hết, hãy xác nhận xem cú pháp của nó đúng…

  & gt; & gt; & gt; lambda x: x nếu x & gt; 2 cái khác 2 * x
& lt; hàm & lt; lambda & gt; tại 0x101451dd0 & gt;  

Không có lỗi nào cho đến nay… hãy kiểm tra chức năng của chúng tôi:

  & gt; & gt; & gt; (lambda x: x nếu x & gt; 2 khác 2 * x) (1)
2
& gt; & gt; & gt; (lambda x: x nếu x & gt; 2 khác 2 * x) (2)
4
& gt; & gt; & gt; (lambda x: x nếu x & gt; 2 khác 2 * x) (3)
3  

Nó hoạt động tốt…

… đồng thời bạn có thể thấy rằng mã của chúng ta có thể trở nên khó đọc hơn nếu chúng ta làm cho biểu thức lambda ngày càng phức tạp hơn .

Như đã đề cập ở phần đầu của hướng dẫn này: một hàm lambda chỉ có thể có một biểu thức duy nhất. Điều này làm cho nó có thể áp dụng cho một số trường hợp sử dụng hạn chế so với một hàm thông thường .

Cũng nên nhớ…

Bạn không thể có nhiều câu lệnh trong một biểu thức lambda .

Cách thay thế For Loop bằng Lambda và Map

Trong phần này, chúng ta sẽ thấy lambdas có thể rất mạnh mẽ như thế nào khi được áp dụng cho các tệp lặp như danh sách Python .

Hãy bắt đầu với vòng lặp for Python tiêu chuẩn lặp qua tất cả các phần tử của danh sách các chuỗi và tạo một danh sách mới trong đó tất cả các phần tử đều là chữ hoa.

  country = ['Ý', 'Vương quốc Anh', 'Đức']
country_uc = []

cho quốc gia trong các quốc gia:
    country_uc.append (country.upper ())  

Đây là kết quả đầu ra:

  & gt; & gt; & gt; quốc gia = ['Ý', 'Vương quốc Anh', 'Đức']
& gt; & gt; & gt; country_uc = []
& gt; & gt; & gt;
& gt; & gt; & gt; cho quốc gia trong các quốc gia:
... country_uc.append (country.upper ())
...
& gt; & gt; & gt; print (country_uc)
['ITALY', 'UNITED KINGDOM', 'GERMANY']  

Bây giờ chúng ta sẽ viết cùng một mã nhưng với một lambda. Để làm điều đó, chúng tôi cũng sẽ sử dụng một hàm tích hợp sẵn trong Python có tên là map có cú pháp sau:

  map (function, iterable, ...)  

The < strong> hàm bản đồ nhận một hàm khác làm đối số đầu tiên và sau đó là danh sách các tệp lặp. Trong ví dụ cụ thể này, chúng ta chỉ có một danh sách quốc gia có thể lặp lại.

Bạn đã bao giờ thấy một hàm sử dụng một hàm khác làm đối số chưa?

Một hàm lấy một hàm khác Hàm làm đối số được gọi là Hàm thứ tự cao hơn.

Nghe có vẻ phức tạp, ví dụ này sẽ giúp bạn hiểu cách hoạt động của nó.

Vậy, bản đồ có chức năng gì làm gì?

Hàm bản đồ trả về một có thể lặp lại là kết quả của hàm được truyền làm đối số đầu tiên được áp dụng cho mọi phần tử của có thể lặp.

Trong kịch bản hàm mà chúng ta sẽ chuyển làm đối số đầu tiên sẽ là một hàm lambda chuyển đổi đối số của nó thành định dạng chữ hoa. Khi có thể lặp lại, chúng tôi sẽ chuyển danh sách của chúng tôi.

  map (lambda x : x.upper (), country)  

Chúng ta có nên thử thực thi nó không?

  & gt; & gt; & gt; bản đồ (lambda x: x.upper (), các quốc gia)
& lt; đối tượng bản đồ tại 0x101477890 & gt;  

Chúng tôi lấy lại một đối tượng bản đồ. Thay vào đó, chúng tôi có thể lấy lại danh sách bằng cách nào?

Chúng tôi có thể truyền đối tượng bản đồ vào danh sách…

  & gt; & gt; & gt; danh sách (bản đồ (lambda x: x.upper (), các quốc gia))
['ITALY', 'UNITED KINGDOM', 'GERMANY']  

Rõ ràng là cách sử dụng map và lambda làm cho mã này ngắn gọn hơn rất nhiều so với mã mà chúng ta sử dụng vòng lặp for .

Sử dụng Lambda Functions với Từ điển

< / p>

Tôi muốn thử sử dụng hàm lambda để trích xuất một trường cụ thể từ danh sách các từ điển.

Đây là điều có thể áp dụng trong nhiều trường hợp.

Đây là danh sách các từ điển của tôi:

  people = [{'firstname' : 'John', 'lastname': 'Ross'}, {'firstname': 'Mark', 'lastname': 'Green'}]  

Một lần nữa tôi có thể sử dụng bản đồ hàm tích hợp sẵn cùng với một hàm lambda.

Hàm lambda nhận một từ điển làm đối số và trả về giá trị của khóa tên đầu tiên.

  lambda x: x ['firstname ']  

Biểu thức bản đồ đầy đủ là:

  firstnames = list (map (lambda x: x ['firstname'], people))  

Hãy chạy nó:

  & gt; & gt; & gt; firstnames = list (bản đồ (lambda x: x ['firstname'], people))
& gt; & gt; & gt; print (tên)
['John', 'Mark']  

Rất mạnh mẽ!

< / p> Truyền Lambda vào Hàm Tích hợp Bộ lọc

Một hàm tích hợp sẵn khác của Python mà bạn có thể sử dụng cùng với lambdas là chức năng lọc .

Dưới đây, bạn có thể thấy cú pháp của nó yêu cầu một hàm và có thể lặp lại một lần:

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

Ý tưởng ở đây là tạo một biểu thức trong đó một danh sách trả về một danh sách mới có các phần tử phù hợp với điều kiện cụ thể được xác định bởi hàm lambda.

Ví dụ: với một danh sách các số mà tôi muốn trả về một danh sách chỉ bao gồm các hàm phủ định.

Đây là hàm lambda mà chúng tôi sẽ sử dụng:

  lambda x: x & lt; 0  

Hãy thử thực thi lambda này truyền một vài số vào nó để lambda trả về rõ ràng là gì.

 < code class = "language-python" lang = "python"> & gt; & gt; & gt; (lambda x: x & lt; 0) (- 1)
ĐÚNG VẬY
& gt; & gt; & gt; (lambda x: x & lt; 0) (3)
Sai  

Lambda của chúng tôi trả về boolean:

  • Đúng nếu đối số là âm.
  • Sai nếu đối số là dương. < / li>

Bây giờ, hãy áp dụng lambda này cho hàm bộ lọc :

  & gt; & gt; & gt; số = [1, 3, -1, -4, -5, -35, 67]
& gt; & gt; & gt; negative_numbers = list (filter (lambda x: x & lt; 0, number))
& gt; & gt; & gt; print (số_bản)
[-1, -4, -5, -35]  

Chúng tôi nhận được kết quả như mong đợi, một danh sách chứa tất cả các số âm.

Bạn có thấy không sự khác biệt so với hàm bản đồ?

Hàm bộ lọc trả về một danh sách chứa tập hợp con của các phần tử trong danh sách ban đầu.

Cách Rút gọn và Sử dụng Lambda với Danh sách

Một Python phổ biến khác được xây dựng -in function là hàm rút gọn thuộc về mô-đun functools .

  Reduce (function, iterable [, khởi tạo])  

Trong ví dụ này, chúng tôi sẽ bỏ qua trình khởi tạo, bạn có thể tìm thêm chi tiết về nó tại đây .

Hàm rút gọn làm gì?

Đưa ra danh sách các giá trị:

  [v1, v2, ..., vn]  

Nó áp dụng hàm được truyền dưới dạng đối số, cho hai phần tử đầu tiên của có thể lặp. Kết quả là:

  [func (v1, v2), v3, ..., vn ]  

Sau đó, nó áp dụng chức năng cho kết quả của lần lặp trước và phần tử tiếp theo trong danh sách:

  [func (func (v1, v2), v3), v4, ..., vn]  

Quá trình này tiếp tục để cho đến khi đến phần tử cuối cùng trong danh sách. Kết quả cuối cùng là một số duy nhất .

Để hiểu nó trong thực tế, chúng tôi sẽ áp dụng một lambda đơn giản để tính tổng của hai số vào danh sách các số:

  & gt; & gt; & gt; giảm (lambda x, y: x + y, [3, 7, 10, 12, 5])
37  

Đây là cách kết quả được tính:

  ((((3 + 7) +10) +12) +5)  

Có hợp lý không?

Hãy xem liệu chúng ta có thể sử dụng tính năng giảm hàm để nối các chuỗi trong danh sách:

  & gt; & gt; & gt; giảm (lambda x, y: x + '' + y, ['This', 'is', 'a', 'tutorial', 'about', 'Python', 'lambdas'])
'Đây là hướng dẫn về Python lambdas'  

Nó hoạt động!

Các hàm Lambda được áp dụng cho một Lớp

Xét rằng lambda có thể được sử dụng để thay thế các hàm Python thông thường, chúng ta có thể sử dụng lambdas làm lớp không phương thức?

Hãy cùng tìm hiểu!

Tôi sẽ xác định một lớp được gọi là Gorilla có chứa hàm tạo và phương thức chạy in ra thông báo:

  class Gorilla:
    def __init __ (bản thân, tên, tuổi, cân nặng):
        self.name = tên
        self.age = tuổi
        self.weight = trọng lượng

    def run (tự):
        print ('{} bắt đầu chạy!'. format (self.name))  

Sau đó, tôi tạo một phiên bản của lớp này có tên là Spartacus và thực thi phương thức run trên nó:

  Spartacus = Gorilla ('Spartacus', 35, 150)
Spartacus.run ()  

Đầu ra là:

  Spartacus bắt đầu chạy!  

Bây giờ, hãy thay thế phương thức run bằng một hàm lambda:

  run = lambda self: print ('{} bắt đầu chạy!'. format (self.name))  

Theo cách tương tự chúng tôi đã làm trong một trong những phần ở trên, chúng tôi gán đối tượng hàm do lambda trả về cho biến chạy.

Cũng lưu ý rằng:

  • Chúng tôi đã xóa từ khóa def vì chúng tôi đã thay thế hàm thông thường với lambda.
  • Đối số của lambda là bản sao của lớp self .

Thực thi lại phương thức run trên phiên bản của lớp Gorilla…

… bạn sẽ thấy rằng thông báo đầu ra giống hệt nhau.

Điều này cho thấy rằng chúng ta có thể sử dụng lambdas dưới dạng phương thức lớp!

Bạn có thể chọn phương thức nào bạn thích tùy thuộc vào điều gì giúp mã của bạn dễ bảo trì và dễ hiểu.

Sử dụng Lambda với Hàm sắp xếp

Hàm tích hợp đã sắp xếp trả về một danh sách được sắp xếp từ một danh sách có thể lặp lại.

Hãy xem một ví dụ đơn giản, chúng tôi sẽ sắp xếp một danh sách chứa tên của một số hành tinh:

 < code class = "language-python" lang = "python"> & gt; & gt; & gt; hành tinh = ['saturn', 'đất', 'sao hỏa', 'jupiter']
& gt; & gt; & gt; đã sắp xếp (hành tinh)
['earth', 'jupiter', 'mars', 'saturn']  

Như bạn có thể thấy hàm sắp xếp sắp xếp danh sách theo thứ tự bảng chữ cái.

Bây giờ, hãy giả sử chúng tôi muốn sắp xếp danh sách dựa trên một tiêu chí khác, chẳng hạn như độ dài của mỗi từ.

Để làm điều đó, chúng tôi có thể sử dụng tham số bổ sung key cho phép cung cấp hàm được áp dụng cho từng phần tử trước khi thực hiện bất kỳ so sánh nào.

  & gt; & gt; & gt; đã sắp xếp (hành tinh, key = len)
['mars', 'earth', 'saturn', 'jupiter']  

Trong trường hợp này, chúng tôi đã sử dụng hàm tích hợp len (), đó là lý do tại sao các hành tinh được sắp xếp từ từ ngắn nhất đến dài nhất.

Vậy, lambdas phù hợp ở đâu trong tất cả những điều này?

Lambdas là các hàm và do đó, chúng có thể được sử dụng với tham số chính.

Ví dụ: giả sử tôi muốn sắp xếp danh sách của mình dựa trên chữ cái thứ ba của mỗi hành tinh.

Đây là cách chúng tôi thực hiện điều đó…

  & gt; & gt; & gt; đã sắp xếp (hành tinh, key = lambda p: p [2])
['jupiter', 'earth', 'mars', 'saturn']  

Và điều gì sẽ xảy ra nếu tôi muốn sắp xếp danh sách từ điển dựa trên giá trị của một thuộc tính cụ thể?

  & gt; & gt; & gt; people = [{'firstname': 'John', 'lastname': 'Ross'}, {'firstname': 'Mark', 'lastname': 'Green'}]
& gt; & gt; & gt; đã sắp xếp (mọi người, key = lambda x: x ['lastname'])
[{'firstname': 'Mark', 'lastname': 'Green'}, {'firstname': 'John', 'lastname': 'Ross'}]  

Trong này Ví dụ, chúng tôi đã sắp xếp danh sách các từ điển dựa trên giá trị của khóa họ.

Hãy thử!

Python Lambda và Xử lý lỗi

Trong phần chúng ta đã xem xét sự khác biệt giữa lambda và các hàm thông thường, chúng ta đã thấy như sau:

  & gt; & gt; & gt; nhân
& lt; hàm nhân với 0x101451d40 & gt;
& gt; & gt; & gt; nhân_lambda
& lt; hàm & lt; lambda & gt; tại 0x1014227a0 & gt;  

Trong đó nhân là một hàm thông thường và nhân_lambda là một hàm lambda.

Như bạn có thể thấy, đối tượng hàm cho một hàm thông thường được xác định bằng tên , trong khi đối tượng hàm lambda được xác định bởi một & lt; lambda & gt; tên.

Điều này cũng làm cho việc xử lý lỗi phức tạp hơn một chút với các hàm lambda vì truy nguyên Python không bao gồm tên của hàm xảy ra lỗi.

Hãy tạo một hàm thông thường. hàm và chuyển tới nó các đối số có thể khiến trình thông dịch Python đưa ra một ngoại lệ:

  def Calcul_sum (x, y):
    trả về x + y

print (features_sum (5, 'Not_a_number'))  

Khi tôi chạy mã này trong Python shell, tôi gặp lỗi sau:

  & gt; & gt; & gt; def tính_sum (x, y):
... trả về x + y
...
& gt; & gt; & gt; print (math_sum (5, 'Not_a_number'))
Traceback (cuộc gọi gần đây nhất cuối cùng):
  Tệp "& lt; stdin & gt;", dòng 1, trong & lt; mô-đun & gt;
  Tệp "& lt; stdin & gt;", dòng 2, trong Calcul_sum
TypeError: (các) loại toán hạng không được hỗ trợ cho +: 'int' và 'str'  

Từ truy nguyên, chúng ta có thể thấy rõ rằng lỗi xảy ra ở dòng 2 của hàm Calcul_sum.

Bây giờ, hãy thay thế hàm này bằng một lambda:

  Calcul_sum = lambda x , y: x + y
print (allow_sum (5, 'Not_a_number'))  

Kết quả đầu ra là:

  & gt; & gt; & gt; tính_sum = lambda x, y: x + y
& gt; & gt; & gt; print (math_sum (5, 'Not_a_number'))
Traceback (cuộc gọi gần đây nhất cuối cùng):
  Tệp "& lt; stdin & gt;", dòng 1, trong & lt; mô-đun & gt;
  Tệp "& lt; stdin & gt;", dòng 1, trong & lt; lambda & gt;
TypeError: (các) loại toán hạng không được hỗ trợ cho +: 'int' và 'str'  

Loại ngoại lệ và thông báo lỗi giống nhau, nhưng lần này theo dõi lại cho chúng tôi biết rằng đã xảy ra lỗi ở dòng 1 của hàm & lt; lambda & gt ;.

Không hữu ích lắm! < / p>

Hãy tưởng tượng nếu bạn phải tìm đúng dòng trong số 10.000 dòng mã.

Đây là một lý do khác để sử dụng các hàm thông thường thay vì các hàm lambda khi có thể.

Chuyển một danh sách các đối số tới Python Lambda

< / h2>

Trong phần này, chúng ta sẽ thấy cách cung cấp danh sách các đối số có thể thay đổi cho lambda Python.

Để chuyển một số lượng biến cho lambda, chúng ta có thể sử dụng * args giống như cách chúng ta làm với một hàm thông thường:

  (lambda * args: max (args)) (5, 3, 4, 10, 24)  

Khi chúng tôi chạy nó, chúng tôi nhận được tối đa giữa các đối số được truyền vào tới lambda:

  & gt; & gt; & gt; (lambda * args: max (args)) (5, 3, 4, 10, 24)
24  

Chúng tôi không nhất thiết phải sử dụng các kho từ khóa. Điều quan trọng là * trước args trong Python đại diện cho một số lượng biến đối số.

Hãy xác nhận xem đó có phải là trường hợp không bằng cách thay thế args bằng số:

  & gt; & gt; & gt; (lambda * số: max (số)) (5, 3, 4, 10, 24)
24  

Vẫn hoạt động!

Thêm Ví dụ về Hàm Lambda

Trước khi hoàn thành hướng dẫn này, hãy xem thêm một vài ví dụ về lambdas.

Những ví dụ này sẽ cung cấp cho bạn một số ý tưởng khác nếu bạn muốn sử dụng lambdas trong các chương trình Python của mình.

Đưa ra danh sách các lệnh Linux chỉ trả về những lệnh bắt đầu bằng chữ cái ‘c’:

  & gt; & gt; & gt; lệnh = ['ls', 'cat', 'find', 'echo', 'top', 'curl']
& gt; & gt; & gt; danh sách (bộ lọc (lambda cmd: cmd.startswith ('c'), các lệnh))
['cat', 'curl']  

Từ một chuỗi được phân tách bằng dấu phẩy có dấu cách trả về một danh sách chứa mỗi từ trong chuỗi không có dấu cách:

  & gt; & gt; & gt; các ngày trong tuần = "thứ hai, thứ ba, thứ tư, thứ năm, thứ sáu, thứ bảy, chủ nhật"
& gt; & gt; & gt; danh sách (bản đồ (lambda word: word.strip (), weekdays.split (',')))
['thứ hai', 'thứ ba', 'thứ tư', 'thứ năm', 'thứ sáu', 'thứ bảy', 'chủ nhật']  

Tạo danh sách số bằng Hàm phạm vi trong Python và trả về các số lớn hơn bốn:

  & gt; & gt; & gt; danh sách (bộ lọc (lambda x: x & gt; 4, range (15)))
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]  

< / p> Kết luận

Trong hướng dẫn này, chúng ta đã thấy lambda Python là gì, cách định nghĩa và thực thi nó. < / p>

Chúng ta đã xem qua các ví dụ với một hoặc nhiều đối số và chúng ta cũng đã biết cách lambda trả về một đối tượng hàm (mà không cần câu lệnh return).

Giờ thì bạn đã biết rằng lambda còn được gọi là hàm ẩn danh vì khi bạn định nghĩa nó, bạn không liên kết nó với một tên.

Ngoài ra, phân tích sự khác biệt giữa các hàm thông thường và hàm lambda trong Python đã giúp chúng tôi hiểu rõ hơn về cách hoạt động của lambdas.

Việc sử dụng các hàm lambda rất phổ biến khi chúng chỉ cần dùng một lần trong mã của bạn. Nếu bạn cần một hàm được gọi nhiều lần trong cơ sở mã của mình bằng cách sử dụng các hàm thông thường là cách tốt hơn để tránh trùng lặp mã.

Luôn nhớ tầm quan trọng của việc viết mã sạch, mã mà bất kỳ ai cũng có thể nhanh chóng hiểu được trong trường hợp các lỗi cần được sửa nhanh chóng trong tương lai.

Giờ bạn có sự lựa chọn giữa lambdas và các hàm thông thường, hãy chọn đúng! 🙂

Tôi là Trưởng nhóm kỹ thuật, Kỹ sư phần mềm và Huấn luyện viên lập trình. Tôi muốn giúp bạn trong hành trình trở thành Nhà phát triển cấp cao!


Xem thêm những thông tin liên quan đến chủ đề lambda trong python là gì

Cách dùng hàm vô danh lambda trong python

  • Tác giả: Gà Python
  • Ngày đăng: 2022-04-15
  • Đánh giá: 4 ⭐ ( 7378 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: ✅Like, đăng ký kênh, bật chuông ủng hộ AD nha anh em. Thanks 🥰
    – Video Thuộc về : Gà Python vui lòng không reup dưới mọi hình thức.
    – Nguồn Nhạc:
    Music provided by NoCopyrightSounds
    https://www.youtube.com/user/NoCopyrightSounds

    Music provided by TheFatRat
    https://www.youtube.com/user/ThisIsTheFatRat

    GaPython Python LearnPython

Hàm lambda trong Python

  • Tác giả: freetuts.net
  • Đánh giá: 3 ⭐ ( 1395 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.

Tìm hiểu về hàm ẩn danh Lambda

  • Tác giả: t3h.edu.vn
  • Đánh giá: 3 ⭐ ( 6458 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Nếu bạn còn chưa biết biểu thức Lambda là gì, cách sử dụng chúng ra sao và cú pháp của hàm Lambda trong Python là gì thì cùng tìm hiểu ngay qua bài viết dưới đây.

Kiểu dữ liệu function trong Python – Lambda

  • Tác giả: howkteam.vn
  • Đánh giá: 5 ⭐ ( 3116 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Kiểu dữ liệu function trong Python – Lambda

Python Lambda Function

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

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

  • Tác giả: viblo.asia
  • Đánh giá: 5 ⭐ ( 2974 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ử…

LAMBDA là gì?

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

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  Cách thay đổi một cột từ Null thành Not Null trong SQL Server - máy chủ sql không null

By ads_php