Sử dụng lambda, zip, map trong Python

Gần đây, mình có làm việc nhiều hơn với Python, và mình phát hiện ra một số functions khá hữu dụng và được các bạn Data Scientists sử dụng khá nhiều. Vì thế, mình hy vọng bài viết ngắn này có thể đưa ra vài techniques có tính ứng dụng cao.

Hãy bắt đầu với ví dụ đơn giản:

def find_max(a, b):
return a if a > b else b

Mục đích của function là tìm giá trị max của từng cặp giá trị tương ứng trong list1 và list2.

Hãy xem làm cách nào để vận dụng zip, map, và lambda vào trong function này nhé.

Zip

Hãy thử ví dụ nhỏ này:

list1 = [1, 2, 3, 4, 5]
list2 = [10, 11, 0, 13, 14]
my_zip = zip(list1, list2)

Như vậy, zip() dùng để group từng element wise trong 2 lists có cùng length với nhau.

Lambda

Hãy bắt đầu với ví dụ này:

power2 = lambda i: i*i

Bạn có thể thấy lambda chính là cách viết tắt của function declaration đúng không? Như vậy thì nó mang lại tiện ích gì?

Hãy xem tiếp phần map nhé.

Map

list1 = [1, 2, 3, 4, 5]
list2 = [10, 11, 0, 13, 14]
my_zip = zip(list1, list2)

Như vậy, map function đã làm việc kết hợp function find_max() và my_zip lại. Nó giống với việc input từng cặp element của my_zip và trả lại giá trị find_max() của cặp ấy.

Tuy nhiên, đây đã phải là cách trình bày ngắn nhất chưa? Hãy quan sát dòng code sau nhé:

my_map = map(
lambda pair: pair[0] if pair[0] > pair[1] else pair[1],
my_zip
)

Trên ví dụ trên, mình đã thu gọn lại bằng cách dùng lambda thay vì gọi find_max(). Khá gọn phải không nào?

Và đây cũng là trường hợp phổ biến mà bạn có thể áp dụng map, lambda và zip cùng nhau.

Ngoài ra, bạn có thể dùng lambda cùng với filter() hoặc reduce(). Mình để ví dụ ở dưới. Bạn thử phân tích xem nó làm gì nhé?

my_filter = filter(
lambda x: x%2==0,
[1, 2, 3, 4, 5]
)

Happy pythoning!

Work hard, stay humble

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store