Hướng dẫn dùng lamada python

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ì
  • 2 Có thể có nhiều tham số
  • 3 Các cách truyền tham số
  • 4 Sử dụng lambda với map[], filter[], reduce[]
    • 4.1 Sử dụng lambda với map[]
    • 4.2 Sử dụng lambda với filter[]
    • 4.3 Sử dụng lambda với reduce[]
  • 5 Trả về nhiều giá trị
  • 6 if else trong Lambda
  • 7 Lambda Key Functions
  • 8 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:

doubler = lambda x: x*2 print[doubler[5]] # Prints 10 print[doubler[15]] # Prints 30

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ố

mul = lambda x, y: x*y print[mul[5, 10]] # Prints 50

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:

# Positional arguments add = lambda x, y, z: x+y+z print[add[2, 3, 4]] # Prints 9 # Keyword arguments add = lambda x, y, z: x+y+z print[add[2, z=3, y=4]] # Prints 9 # Default arguments add = lambda x, y=3, z=4: x+y+z print[add[2]] # Prints 9 # *args add = lambda *args: sum[args] print[add[2, 3, 4]] # Prints 9 # **args add = lambda **kwargs: sum[kwargs.values[]] print[add[x=2, y=3, z=4]] # Prints 9

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[]

# nhân đôi giá trị của từng phần tử def doubler[x]: return x*2 nums = [1, 3, 5, 7, 9, 10] mod_list = map[doubler, nums] print[list[mod_list]] # Prints [2, 6, 10, 14, 18, 20]

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

# nhân đôi giá trị của từng phần tử nums = [1, 3, 5, 7, 9, 10] doubler = map[lambda x: x*2, nums] print[list[doubler]] # Prints [2, 6, 10, 14, 18, 20]

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

# Lọc tuổi trên 18 def checkAge[age]: if age > 18: return True else: return False age = [5, 7, 18, 19, 25, 40] adults = filter[checkAge, age] print[list[adults]] # Prints [19, 25, 40]

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

# Lọc tuổi trên 18 age = [5, 7, 18, 19, 25, 40] adults = filter[lambda x: x> 18, age] print[list[adults]] # Prints [19, 25, 40]

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

# tính tổng các phần tử trong danh sách from functools import reduce def summer[a, b]: return a + b nums = [10, 20, 30, 40] result = reduce[summer, nums] print[result] # Prints 100

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

from functools import reduce nums = [10, 20, 30, 40] result = reduce[lambda a, b: a + b, nums] print[result] # Prints 100

Trả về nhiều giá trị

# trả về nhiều giá trị dưới dạng tupe findSquareCube = lambda num: [num**2, num**3] sc1, sc2 = findSquareCube[3] print[sc1] # Prints 9 print[sc2] # Prints 27

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:

# hàm lambda trả về giá trị nhỏ nhấ findMin = lambda x, y: x if x < y else y print[findMin[2, 10]] # Prints 2 print[findMin['a', 'z']] # Prints a

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:

# sắp xếp danh sách theo tuổi players = [['CR7', 35], ['Kane', 28], ['Bob', 20]] x = sorted[players, key=lambda player: player[1]] print[x] # Prints [['Bob', 20], ['Kane', 28], ['CR7', 35]]

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.

Bài Viết Liên Quan

Hướng dẫn how do you find the maximum value of a function in php? - làm cách nào để tìm giá trị lớn nhất của một hàm trong php?

Hướng dẫn how do i set connection timeout in mysql? - làm cách nào để đặt thời gian chờ kết nối trong mysql?

Bản đồ thế giới 2023

Hướng dẫn php private function naming convention - quy ước đặt tên hàm private php

Hướng dẫn encode int python - mã hóa int python

Hướng dẫn matlab vs python for machine learning reddit - matlab vs python cho máy học reddit

Hướng dẫn python pandas project github - dự án gấu trúc python github

Linux ubuntu lệnh update

Lệ phí thi acca 2023

Hướng dẫn python add object to dictionary - python thêm đối tượng vào từ điển

Hướng dẫn signal generation in python - tạo tín hiệu trong python

Tạo thời khóa biểu html

Hướng dẫn histogram segmentation python - python phân đoạn biểu đồ

Hướng dẫn how do i open a python file in my browser? - làm cách nào để mở tệp python trong trình duyệt của tôi?

Theme bán hàng wordpress 2023

Học lập trình python từ cơ bản đến nâng cao

Hướng dẫn how to drag formula in google sheets mobile - cách kéo công thức trên google sheet mobile

Xe ab mới 2023

Hướng dẫn wap to generate 5 random numbers in python - wap để tạo 5 số ngẫu nhiên trong python

Dò mật khẩu facebook bằng kali linux

Toplist mới

#1

Top 10 sông nào sau đây ứng với bộ nào unicode 20225 ngày trước

#2

Top 10 đặc trưng chống mài mòn về có tính của vật liệu 20225 ngày trước

#3

Top 8 các bộ phận trong công ty hồng hải 20222 ngày trước

#4

Top 15 giải và biện luận bất phương trình 20226 ngày trước

#5

Top 10 kim loại nào sau đây không tác dụng với khí cl2 20224 giờ trước

#6

Top 8 ăn ếch có bị sẹo lồi không 20223 ngày trước

#7

Top 7 vùng trọng điểm sản xuất lương thực, thực phẩm lớn nhất nước ta 20221 tuần trước

#8

Top 9 dung dịch metylamin không tác dụng với chất nào sau đây 202219 giờ trước

#9

Top 10 trong mặt phẳng tọa độ oxy cho a[1 2 b 3 4 c 2 1] 20221 ngày trước

Bài mới nhất

Một cá thể có kiểu gen A lớn B lớn

Top 20 cửa hàng sàn gỗ Huyện Tiên Phước Quảng Nam 2022

Quy trình ra quyết định của Simon

High School School Calendar 2022 to 2023 SEP

Chỉ mục cột csv python

Tại sao Net TV tiếp tục đệm?

Kích thước tệp tối đa ghi nhật ký python

Bắt đầu chạy bộ như thế nào

Kế hoạch bồi dưỡng thường xuyên giáo viên mầm non 2022-2022

5 chữ cái bắt đầu bằng chữ cái thứ hai năm 2022

Chủ Đề

Hỏi Đáp Là gì Toplist programming Mẹo Hay Địa Điểm Hay Học Tốt Nghĩa của từ Công Nghệ Bao nhiêu Tiếng anh Khỏe Đẹp Món Ngon Top List Sản phẩm tốt Xây Đựng Bài Tập Ngôn ngữ Hướng dẫn Ở đâu Tại sao javascript Dịch Bài tập Máy tính So Sánh Đại học Bao lâu Vì sao Thế nào Khoa Học Hà Nội So sánh

Chủ Đề