Hướng dẫn python lambda *args - python lambda * args

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ề

10
2 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ử dụng của chúng. Các bạn cùng tìm hiểu trong bài viết của mình nhé!

Khái niệm Lambda Function(hàm ẩn danh) trong Python

Trong Python, một hàm ẩn danh là một hàm được định nghĩa mà không có tên. Trong khi các hàm bình thường sẽ được định nghĩa bằng các từ khóa

10
3 trong Python, thì các hàm ẩn danh sẽ được định nghĩa bằng từ khóa
10
4. Vì vậy các hàm ẩn danh còn được gọi là các
10
2.


Làm cách nào xử dụng Lambda Function trong Python?

Một

10
6 trong Python sẽ có cú pháp như sau:

Cú pháp của Lambda Function trong python

lambda arguments: expression

Các hàm lambda có thể có bất kỳ số đối số nào nhưng chỉ có một biểu thức. Biểu thức được đánh giá và trả về. Các

10
6 có thể được sử dụng ở bất cứ chỗ nào yêu cầu các đối tượng hàm.


Ví dụ về Lambda Function trong python

Dưới đây là một ví dụ về

10
6 để xử lý việc tăng gấp đôi giá trị đầu vào:

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))

Kết quả:

10

Ở ví dụ trên

10
9 sẽ là hàm lamba. Ở đây
double = lambda x: x * 2
0 là đối số vào
double = lambda x: x * 2
1 là biểu thức được đánh giá và trả về.

Function này sẽ không có tên. Nó trả về một object được định danh là

double = lambda x: x * 2
2. Giờ thì chúng ta có thể gọi nó như một hàm bình thường. Ví dụ:

double = lambda x: x * 2

Nó sẽ tương tự như các khai báo function như sau:

def double(x):
   return x * 2

Xử dụng Lambda Function trong Python

Chúng ta thường sử dụng

10
6 khi mà cần một hàm không tên trong một khoảng thời gian ngắn.

Trong Python, chúng ta thường sử dụng

10
6 làm đối số cho một hàm bậc cao hơn (một hàm mà có thể nhận các hàm khác làm đối số).
double = lambda x: x * 2
5 thường được sử dụng cùng với các hàm tích hợp sẵn như
double = lambda x: x * 2
6,
double = lambda x: x * 2
7...

Ví dụ khi xử dụng Lambda Function với Filter()

Hàm

double = lambda x: x * 2
6 trong Python nhận một hàm và một danh sách làm đối số. Hàm được gọi với tất cả các items trong danh sách và một i danh sách mới được trả về chứa các items mà hàm đánh giá là
double = lambda x: x * 2
9.

Đây là một ví dụ sử dụng hàm

double = lambda x: x * 2
6 để chỉ lọc ra các số chẵn từ danh sách.

my_list = [1, 5, 4, 6, 8, 11, 3, 12]

new_list = list(filter(lambda x: (x%2 == 0) , my_list))

print(new_list)

Kết quả:

[4, 6, 8, 12]

Ở ví dụ trên
10
9 sẽ là hàm lamba. Ở đây
double = lambda x: x * 2
0 là đối số vào
double = lambda x: x * 2
1 là biểu thức được đánh giá và trả về.

Function này sẽ không có tên. Nó trả về một object được định danh là

double = lambda x: x * 2
2. Giờ thì chúng ta có thể gọi nó như một hàm bình thường. Ví dụ:

Nó sẽ tương tự như các khai báo function như sau:

my_list = [1, 5, 4, 6, 8, 11, 3, 12]

new_list = list(map(lambda x: x * 2 , my_list))

print(new_list)

Kết quả:

[2, 10, 8, 12, 16, 22, 6, 24]

Ở ví dụ trên
10
9 sẽ là hàm lamba. Ở đây
double = lambda x: x * 2
0 là đối số vào
double = lambda x: x * 2
1 là biểu thức được đánh giá và trả về.

Function này sẽ không có tên. Nó trả về một object được định danh là

double = lambda x: x * 2
2. Giờ thì chúng ta có thể gọi nó như một hàm bình thường. Ví dụ:

Nó sẽ tương tự như các khai báo function như sau:

Xử dụng Lambda Function trong Python


Chúng ta thường sử dụng
10
6 khi mà cần một hàm không tên trong một khoảng thời gian ngắn.

Trong Python, chúng ta thường sử dụng

10
6 làm đối số cho một hàm bậc cao hơn (một hàm mà có thể nhận các hàm khác làm đối số).
double = lambda x: x * 2
5 thường được sử dụng cùng với các hàm tích hợp sẵn như
double = lambda x: x * 2
6,
double = lambda x: x * 2
7...


Ví dụ khi xử dụng Lambda Function với Filter()

https://www.programiz.com/python-programming/anonymous-function

Lambda function một trong những tính năng hữu dụng và quan trọng trong Python. Tuy nhiên lambda lại khó hiểu và thường mắc lỗi. Để tránh việc này chúng ta cùng nhau tìm hiểu kỹ về Lambda Function nhé.

Nội dung của bài

  • 1 Lambda function là gì Lambda function là gì
  • 2 Có thể có nhiều tham số Có thể có nhiều tham số
  • 3 Các cách truyền tham số Các cách truyền tham số
  • 4 Sử dụng lambda với map(), filter(), reduce() Sử dụng lambda với map(), filter(), reduce()
    • 4.1 Sử dụng lambda với map() Sử dụng lambda với map()
    • 4.2 Sử dụng lambda với filter() Sử dụng lambda với filter()
    • 4.3 Sử dụng lambda với reduce() Sử dụng lambda với reduce()
  • 5 Trả về nhiều giá trị Trả về nhiều giá trị
  • 6 if else trong Lambda if else trong Lambda
  • 7 Lambda Key Functions Lambda Key Functions
  • 8 Kết luận Kết luận

Lambda function là gì

Lambda function là cách đơn gian để khai báo một hàm. Đôi khi chúng ta còn nghe đến với từ kháo Lambda operators.

Ở bài hàm trong Python chúng ta đã tìm hiểu cách khai báo một hàm bằng từ khóa def, có lẽ đủ đơn giản để dùng. Vậy tại sao lại cần có 1 cách khác để khai báo hàm? Câu trả lời là: Lambda là hàm ẩn danh (anonymous) tức là function mà không cần khai báo tên.

Thường cúng ta sử dụng lambda function với các hàm chỉ cần một dòng lệnh.

Ví dụ:

def doubler(x):
    return x*2

print(doubler(4))
# Prints 8

print(doubler(10))
# Prints 100

Ví dụ trên là cách khai báo hàm theo cách thường làm, hàm doubler sẽ trả về giá tị bằng 2 lần giá trị truyền vào.

Chúng ta thử dùng lambda function:

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))
0

Trong ví dụ trên chúng ta khai báo lambda function sử dụng cú pháp:

lambda parameters: expression

Hàm lambda không cần sử dụng từ khóa return, lambda tự động trả về giá trị của biểu thức.

Có thể có nhiều tham số

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))
1

Trong ví dụ trên hàm lambda nhận 2 tham số x, y và trả về giá trị là tích của x và y.

Các cách truyền tham số

Như đã nói về các loại tham số của hàm hàm lambda cũng hỗ trợ các loại tham số:

  • Positional Arguments
  • Keyword Arguments
  • Default Arguments
  • Variable Length Positional Arguments (*args)
  • Variable Length Keyword Arguments (**kwargs)

Hãy xem cách truyền các loại tham số trên trong ví dụ dưới đây:

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))
2

Sử dụng lambda với map(), filter(), reduce()

Có 3 hàm trong thư viện có sẵn của Python là map(), filter() và reduce(). Đây là 3 hàm thường hay sử dụng lambda và cho thấy tính hữu dụng của lambda function.

Sử dụng lambda với map()

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))
3

Ví dụ trên là cách khai dùng hàm map() theo cách thông thường.

Hãy xem cách sử dụng với hàm lambda

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))
4

Trong ví dụ này, hàm doubler không cần thiết, thay vào đó chúng ta sử dụng hàm lamba, source code nhìn ngắn gọn hơn.

Sử dụng lambda với filter()

Hàm filter() sử dụng một hàm là điều kiện để tạo ra một list mới từ một list có sẵn

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))
5

Hãy thử sử dụng lambda:

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))
6

Các bạn có thể thấy source code ngắn gon hơn.

Sử dụng lambda với reduce()

Hàm reduce() được viết trong thư viện functools, muốn sử dụng chúng ta phải import package này.

Xem ví dụ sử dụng reduce() theo cách thông thường

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))
7

Chúng ta sử dụng reduce() để cộng dồn giá trị của các phần tử trong danh sách.

Cú pháp của hàm reduce() là: reduce(, ), kết quả trả về của func phải có kiểu giống với kiểu của các phần tử trong iterable. Tham số của func cũng cùng kiểu với kết quả trả về.

Thử dùng lambda với reduce() nhé:

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))
8

Trả về nhiều giá trị

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))
9

if else trong Lambda

Câu lệnh if else không sử dụng được trong Lambda, nhưng thay vào đó chúng ta có thể sử dùng if else expression như ví dụ dưới đây:

10
0

Lambda Key Functions

Trong Python key functions là higher-order function ( hàm có tham số là một hàm và trả về kết quả là một hàm).

Dưới đây là một số key functions:

  • List method: sort()
  • Built-in functions: sorted(), min(), max().

Chúng ta thử dùng lambda là key function:

10
1

Kết luận

Lambda function là rất hữu dụng và quan trọng trong Python, chúng ta sử dụng để source code ngắn gọn hơn.