Lambda Python là gì

This entry is part 26 of 29 in the series Python Không Khó

83 / 100

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
  • Cú pháp cơ bản
  • Hàm map
    • Cú pháp cơ bản
    • Kết hợp map với lambda trong Python
    • Duyệt qua dictionary sử dụng hàm map và lambda trong Python
  • Hàm filter
    • Cú pháp cơ bản

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

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):

    returnx+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=lambdax,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

<span class="pln">map(function,iterable,...)</span>

  • 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):

    returnx *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(lambdax: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(lambdax:x['name'],dict_a)  # Output: ['python', 'java']

print(list(name))

point= map(lambdax: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(lambdax: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!!!

Chủ đề