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