Filter lambda ใน python คืออะไร

lambda เป็นวิธีหนึ่งที่ใช้เขียน function ได้อย่างง่ายๆ เพื่อใช้งานเร็วๆ ซึ่งบางทีการใช้ lambda สามารถทำให้โค้ดอ่านได้ง่ายขึ้น

เช่น function ที่ใช้ในการยกกำลังสอง

> square_num = lambda x: x * x
> square_num(3)
9
> square_num(5)
25

หรือ แม้กระทั่งฟังค์ชั่นที่ใช้ตรวจสอบว่าความยาวของคำ มากกว่า 4 หรือเปล่า

> is_longer_than_4 = lambda x: True if len(x) > 4 else False
> is_longer_than_4("apple")
True
> is_longer_than_4("cat")
False

ส่วน filter เราสามารถใช้กรอง list ได้ โดย parameter อันแรกจะเป็นฟังค์ชั่น และ parameter ที่สองจะเป็น list (หรือ iterator) เช่น

> def is_even(x):
>    if x % 2 == 0:
>        return True
>    else:
>        return False
> list(filter(is_even, range(10)))
[0, 2, 4, 6, 8]

names = [“alice”, “bob”, “charlie”, “dave”]
list(filter( is_longer_than_4, names))
[‘alice’, ‘charlie’]

(เราต้องเอา list() ไปครอบอีกที เพื่อที่ผลจะออกมาเป็น list)

ทีนี้ บางทีการเขียน def ก่อนจะไม่สะดวก หรือจะทำให้อ่านยาก เพราะเราอาจจะต้องอ้างอิงโค้ดหลายจุด ฉะนั้นเพื่อความกระทัดรัด เราสามารถใช้ lambda ได้โดยตรงเลย

> list( filter( lambda x: x % 2 == 0, range(10))) 
[0, 2, 4, 6, 8]

ทำไมถึงเขียนโค้ดเท่านี้ได้? เพระอย่าลืมว่า == นั้น return true or false อยู่แล้ว ฉะนั้นการเอา condition ไปใส่ใน lambda จะให้มีค่า true or false กลับมาที่ filter โดยตรง

> 10 % 2 == 0
True
> 10 % 2 == 1
False
1 Likes