Chuyên mục của bài viết hôm nay tìm hiểu về hàm Lambda trong Python. Chúng tôi sẽ trình bày cú pháp cơ bản của hàm Lambda và đi qua một số ví dụ để làm quen với việc sử dụng chúng. Bắt đầu nào!
Hàm Lambda trong Python
Toán tử lambda hoặc hàm lambda dùng để tạo các đối tượng ẩn danh trong Python.
Cú pháp cơ bản
lambda đối_số: biểu_thức
Một hàm lambda trong Python có thể có nhiều đối số, nhưng chỉ có thể có một biểu thức. Nó không thể chứa một câu lệnh, và kết quả trả về là một đối tương hàm có thể gán cho các biến.
VD: đây là một chương trình trả về tổng của hai số x và y
def sum(x, y): return x + y Sum = sum(3, 4) print(Sum)
Hãy thử xem nếu chúng ta sử dụng hàm Lambda trong Python, nó sẽ trong như thế nào.
sum = lambda x, y : x + y print(sum(3, 4))
Trong lambda x, y : x + y
, x, y
là đối số x+y
là biểu thức của hàm và các giá trị của nó được trả về làm đầu ra.
lambda x, y: x + y trả về một đối tượng hàm có thể được gán cho bất kỳ biến nào, trong trường hợp này, đối tượng hàm được gán cho biến sum
. Thử kiểm tra loại của sum
print(type(sum)) #return <class 'function'>
Hàm Lambda trong Python thường được sử dụng trong các trường hợp khi bạn chỉ có một câu lệnh duy nhất để thực thi.
Hàm map
Cú pháp cơ bản
map(function, iterable, ...)
function
: Hàm thực thi cho từng phần tử trong iterable.iterable
: một list, tuple, dictionary… muốn duyệt.
VD: chương trình in ra bình phương các số 1,2,3,4
def square(x): return x * x number = (1,2,3,4) ketqua = map(square, number) # chuyen map object thanh list print(list(ketqua)) #return [1, 4, 9, 16]
Trong ví dụ trên, map thực hiện hàm square cho từng phần tử trong danh sách, [1, 2, 3, 4] và trả về [1, 4, 9, 16].
Kết hợp map với lambda trong Python
Chúng ta hãy xem làm thế nào chúng ta có thể viết chương trình ở trên bằng cách sử dụng kết hợp hàm map và hàm lambda trong Python .
number = (1,2,3,4) ketqua = map(lambda x: x*x,number) # chuyen map object thanh list print(list(ketqua)) #return [1, 4, 9, 16]
Như vậy chúng ta không cần viết riêng ra một hàm tính bình phương mà vẫn có thể in ra bình phương của một dãy sô.
Duyệt qua dictionary sử dụng hàm map và lambda trong Python
Hãy thử xem qua cách duyệt một dictionary sử dụng hàm map và lambda thông qua ví dụ ở dưới:
dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}] name = map(lambda x: x['name'], dict_a) # Output: ['python', 'java'] print(list(name)) point = map(lambda x: x['points'] * 10, dict_a) # Output: [100, 80] print(list(point))
Trong ví dụ trên, hàm map sẽ duyệt qua dict_a, với mỗi dict của dict_a sẽ được truyền dưới dạng tham số cho hàm lambda, hàm lambda sẽ trả về các giá trị của các key có tên là name .
Hàm filter
Cú pháp cơ bản
filter(function_object, iterable)
Hàm filter() có 2 tham số:
- function_object: là hàm điều kiện để kiểm tra các phần tử trong interable là đúng hay sai, kêt quả trả về chỉ có thể là True hoặc False.
- interable: có thể là set, list, tuple hoặc container.
Giống như map
hàm, hàm filter
cũng trả về một danh sách các phần tử. Tuy nhiên hàm filter
hàm chỉ có thể có một lần lặp làm đầu vào.
Hãy xem qua chương trình in ra số chẵn ở dưới
number = [1,2,3,4,5,6] new_number = filter(lambda x : x % 2 == 0, number) print(list(new_number)) #retrun [2, 4, 6]
Hàm filter sẽ duyệt qua các phần tử của number, hàm lambda sẽ kiểm tra nếu có phần tử nào là chẵn tương đương với True, và sẽ trả về cho new_number, còn không thì sẽ bỏ qua.
Hãy tham gia group lập trình không khó để cùng thảo luận về các vấn đề về lập trình.
Hẹn các bạn vào các bài học sau!!!
Để lại một bình luận