Python lambda cho

Hàm Lambda, còn được gọi là 'Hàm ẩn danh' giống như hàm python thông thường nhưng có thể được xác định mà không cần 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ư hàm python thông thường nhưng có thể được xác định mà không cần tên. Trong khi các chức năng bình thường được xác định bằng từ khóa

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
8, các chức năng ẩn danh được xác định bằng từ khóa
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
9. 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

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
9 được đưa ra bởi.
Using def:  25
1 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
Using def:  25
2 thường có trong cú pháp hàm
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
8. Hàm sẽ chỉ trả về giá trị biểu thức ngay cả khi không có câu lệnh
Using def:  25
2

nội dung

  1. Hàm Lambda trong Python là gì?
  2. Cú pháp hàm Lambda
  3. Cần các hàm Lambda
  4. Cách sử dụng hàm lambda. Ví dụ đơn giản
  5. Bên trong, cả hai hàm lambda và def đều hoạt động giống hệt nhau
  6. Các hàm lambda có thể có 0 hoặc 1 biểu thức, không nhiều hơn
  7. Hàm Lambda có thể được gọi ngay lập tức
  8. Có thể viết các hàm bậc cao hơn bằng lambda
  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 bình thường
  10. Bạn có thể sử dụng chức năng
    # calculate squares using def
    def squares_def(x):
        return x*x
    print('Using def: ', squares_def(5))
    
    9 trong
    Using def:  25
    
    6
  11. Bạn có thể sử dụng chức năng
    # calculate squares using def
    def squares_def(x):
        return x*x
    print('Using def: ', squares_def(5))
    
    9 trong
    Using def:  25
    
    8
  12. Bạn cũng có thể sử dụng chức năng
    # calculate squares using def
    def squares_def(x):
        return x*x
    print('Using def: ', squares_def(5))
    
    9 trong
    # calculate squares using def
    def squares_def(x):
        return x*x
    print('Using def: ', squares_def(5))
    
    20
  13. Cách sử dụng hàm lambda để thao tác Dataframe
  14. Phần kết luận

3. Cần các hàm 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 thông thường được xác định bằng từ khóa
      # calculate squares using def
      def squares_def(x):
          return x*x
      print('Using def: ', squares_def(5))
      
      8. Nhưng điều này không hoàn toàn đúng bởi vì, ngay cả các hàm được định nghĩa bằng
      # calculate squares using def
      def squares_def(x):
          return x*x
      print('Using def: ', squares_def(5))
      
      8 cũng có thể được định nghĩa trong một dòng duy nhất. Nhưng nói chung, các hàm
      # calculate squares using def
      def squares_def(x):
          return x*x
      print('Using def: ', squares_def(5))
      
      8 được viết trong hơn 1 dòng
    2. Chúng thường được sử dụng khi tạm thời cần một chức năng trong thời gian ngắn, thường được sử dụng bên trong một chức năng khác, chẳng hạn như
      # calculate squares using def
      def squares_def(x):
          return x*x
      print('Using def: ', squares_def(5))
      
      24 ,
      # calculate squares using def
      def squares_def(x):
          return x*x
      print('Using def: ', squares_def(5))
      
      25 and
      # calculate squares using def
      def squares_def(x):
          return x*x
      print('Using def: ', squares_def(5))
      
      26.
    3. Sử dụng hàm lambda, bạn có thể định nghĩa một hàm và gọi nó ngay khi kết thúc định nghĩa. Điều này không thể thực hiện được với các hàm
      # calculate squares using def
      def squares_def(x):
          return x*x
      print('Using def: ', squares_def(5))
      
      8 .

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

4. Cách sử dụng 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

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
9. Hãy thử xác định một hàm để tính bình phương của các giá trị đã cho

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
1
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
2

Chúng ta cũng hãy xem cách thực hiện chức năng tương tự bằng cách sử dụng từ khóa

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
8 và so sánh chúng

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))

đầu ra

Using def:  25

Làm tương tự trong một dòng

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
2____3

Thấy rằng trong khi sử dụng từ khóa

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
8, chúng tôi đang trả về một giá trị nhất định
Using def:  25
1. Trong trường hợp hàm
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
9, biểu thức
Using def:  25
1 sẽ được trả về mà không cần viết câu lệnh trả về rõ ràng. Nói chung trong sử dụng thông thường, không có nhiều khác biệt khi sử dụng từ khóa
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
8 và
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
9. Trên thực tế, cả hai đều có chức năng. Hãy xem các loại của họ

Using def:  25
4
Using def:  25
5

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

Using def:  25
6

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

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

Using def:  25
7. Từ khóa
Using def:  25
7 sẽ hiển thị phiên bản mã byte python có thể đọc được cho phép kiểm tra hướng dẫn

Using def:  25
9
Using def:  25
0

Mã byte cho chức năng `def` thông thường

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
20
Using def:  25
0

Xem rằng quy 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 họ thực hiện.  

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 hiện. không chứa biểu thức nào, sẽ cho kết quả giống nhau cho tất cả các đối số
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
22

đầu ra

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

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

Xây dựng sự nghiệp khoa học dữ liệu của bạn với bằng cấp được ngành công nhận trên toàn cầu. Có được tư duy, sự tự tin và các kỹ năng khiến Nhà khoa học dữ liệu trở nên có giá trị

Nhận khóa học Python miễn phí

Python lambda cho

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

Xây dựng sự nghiệp khoa học dữ liệu của bạn với bằng cấp được ngành công nhận trên toàn cầu. Có được tư duy, sự tự tin và các kỹ năng khiến Nhà khoa học dữ liệu trở nên có giá trị

Nhận khóa học Python miễn phí

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
23
  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 nào. Chúng ta không thể đặt nhiều hơn một biểu thức trong hàm lambda
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
24
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
25

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

Bạn có thể triển khai 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

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
9 ngay sau khi xác định nó bằng cách sử dụng dấu ngoặc đơn. Điều này không thể được thực hiện bằng cách sử dụng các hàm
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
8

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
26

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

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
8

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
27

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 ví dụ về hàm lambda lồng nhau, hàm lambda bên trong hàm lambda khác

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
28

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

Using def:  25
42 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 bình thường

Hàm

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
9 hỗ trợ tất cả các loại đối số giống như hàm
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
8 bình thường. 1. Đối số từ khóa.
Using def:  25
45 là một đối số đứng trước một mã định danh (e. g. name=) trong một lệnh gọi hàm. Đối số được đặt tên. Ví dụ

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
29

Danh sách biến của các đối số. Ví dụ

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
0

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

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
1

2. đối số vị trí.

Using def:  25
46 là một đối số không phải là đối số từ khóa

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
2

10. Bạn có thể sử dụng chức năng # calculate squares using def def squares_def(x): return x*x print('Using def: ', squares_def(5)) 9 trong Using def: 25 6

Hàm

Using def:  25
6 được sử dụng để lọc một đối tượng có thể lặp lại nhất định (danh sách giống 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 chuyển thành đối số đầu tiên của
Using def:  25
6. Một iterable giống như một đối tượng danh sách được truyền dưới dạng đối số thứ hai cho hàm
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
24

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
3

11. Bạn có thể sử dụng chức năng # calculate squares using def def squares_def(x): return x*x print('Using def: ', squares_def(5)) 9 trong Using def: 25 8

Hàm ________ 38 áp dụng một hàm đã cho cho tất cả các mục trong danh sách và trả về kết quả. Tương tự như

Using def:  25
6, chỉ cần chuyển hàm lambda và danh sách (hoặc bất kỳ có thể lặp lại nào, như tuple) làm đối số

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
4

12. Bạn cũng có thể sử dụng chức năng # calculate squares using def def squares_def(x): return x*x print('Using def: ', squares_def(5)) 9 trong # calculate squares using def def squares_def(x): return x*x print('Using def: ', squares_def(5)) 20

Hàm

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
20 thực hiện thao tác lặp lại trên các cặp phần tử trong danh sách. Truyền hàm
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
9 và danh sách làm đối số cho hàm
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
20. Để sử dụng hàm
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
20, bạn cần nhập
# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
26 từ thư viện
Using def:  25
93

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
5

Thấy rằng hàm

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
20 lặp đi lặp lại trên các phần tử trong danh sách.
Using def:  25
95, v.v.

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

Bạn cũng có thể thao tác các cột của khung dữ liệu bằng hàm

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
9. Đó là một ứng cử viên tuyệt vời để sử dụng bên trong phương thức
Using def:  25
97 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ụ

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
6

FirstSecondThirdForth012361456120

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

Using def:  25
98, nó áp dụng hàm lambda cho mọi phần tử của khung dữ liệu

# calculate squares using def
def squares_def(x):
    return x*x
print('Using def: ', squares_def(5))
7

FirstSecondThirdForth014936116253614400

Phần kết luận

Hy vọng bạn đã rõ hàm lambda là gì và cách 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

Lambda được sử dụng cho mục đích gì?

Lambda chạy mã của bạn trên cơ sở hạ tầng điện toán có tính sẵn sàng cao và thực hiện tất cả việc quản trị tài nguyên điện toán của bạn . Điều này bao gồm bảo trì máy chủ và hệ điều hành, cung cấp năng lực và tự động mở rộng quy mô, triển khai bản vá bảo mật và mã cũng như giám sát và ghi nhật ký mã.

Có thể sử dụng lambda với vòng lặp for trong Python không?

Vì vòng lặp for là một câu lệnh (như print , trong Python 2. x), bạn không thể đưa nó vào biểu thức lambda . Thay vào đó, bạn cần sử dụng phương thức ghi trên sys.

Tôi có nên sử dụng lambdas trong Python không?

Một trong những trường hợp sử dụng lambdas phổ biến nhất là trong lập trình hàm vì Python hỗ trợ một mô hình (hoặc phong cách) lập trình được gọi là lập trình hàm. Nó cho phép bạn cung cấp một hàm dưới dạng tham số cho một hàm khác (ví dụ: trong bản đồ, bộ lọc, v.v. ).