Python การใช้งาน Lambda Function

Lambda Function ใน Python คือฟังก์ชันแบบนิพจน์ที่ไม่ต้องประกาศชื่อ (anonymous function) โดยใช้คำสั่ง lambda ซึ่งสามารถสร้างฟังก์ชันได้อย่างกระชับเมื่อเทียบกับการใช้คำสั่ง def ปกติ ใช้เมื่อต้องการเขียนฟังก์ชันสั้น ๆ ที่มีบรรทัดเดียวและต้องการความกระชับของโค้ด

รูปแบบการใช้งาน Lambda Function

lambda arguments: expression
  • arguments คือ พารามิเตอร์ที่ต้องการส่งเข้าไปในฟังก์ชัน
  • expression คือ สิ่งที่ฟังก์ชันจะคำนวณและคืนค่าออกมา

Lambda Function แบบง่าย

Python
# ฟังก์ชัน lambda ที่บวกตัวเลขสองตัว
add = lambda x, y: x + y
print(add(5, 3))  # Output: 8

ในตัวอย่างนี้ Lambda Function มีพารามิเตอร์สองตัวคือ x และ y และทำการบวกค่าของทั้งสองแล้วคืนค่าออกมา

ตัวอย่างการใช้ใช้ Lambda ในฟังก์ชันอื่น เช่น map()

Python
# ใช้ lambda ในการบวกเลขใน list กับ 10
numbers = [1, 2, 3, 4]
result = list(map(lambda x: x + 10, numbers))
print(result)  # Output: [11, 12, 13, 14]

ในตัวอย่างนี้ ฟังก์ชัน map() ใช้ Lambda Function เพื่อเพิ่มค่า 10 ให้กับแต่ละตัวในลิสต์ numbers

ตัวอย่างการใช้ใช้ Lambda ใน filter()

Python
# ใช้ lambda กรองค่าใน list ที่มากกว่า 2
numbers = [1, 2, 3, 4, 5]
result = list(filter(lambda x: x > 2, numbers))
print(result)  # Output: [3, 4, 5]

ฟังก์ชัน filter() ใช้ Lambda Function เพื่อเลือกเฉพาะค่าที่มากกว่า 2

ตัวอย่างการใช้ใช้ Lambda ใน sorted() เพื่อกำหนดเงื่อนไขการเรียงลำดับ

Python
# เรียงลำดับ tuple โดยเรียงจากตัวอักษรตัวที่สอง
points = [(1, 'd'), (2, 'b'), (3, 'a'), (4, 'c')]
sorted_points = sorted(points, key=lambda x: x[1])
print(sorted_points)  # Output: [(3, 'a'), (2, 'b'), (4, 'c'), (1, 'd')]

ฟังก์ชัน sorted() ใช้ Lambda Function เป็น key ในการระบุว่าจะเรียงลำดับจากตำแหน่งตัวอักษรที่สองใน tuple

ตัวอย่างเพิ่มเติม

Python
# Lambda ที่ใช้ในฟังก์ชันที่สร้างเงื่อนไขเฉพาะ เช่นการคูณค่าตามเงื่อนไข
multiply = lambda x: x * 2 if x > 3 else x
print(multiply(4))  # Output: 8
print(multiply(2))  # Output: 2

Lambda Function นี้จะทำการคูณค่า x ด้วย 2 หากค่า x มากกว่า 3 ถ้าไม่ใช่ก็จะคืนค่าเดิม

ข้อควรระวัง

  • Lambda Function เหมาะสำหรับงานที่ไม่ซับซ้อนและมีเงื่อนไขหรือการประมวลผลในบรรทัดเดียว
  • หากต้องการเขียนโค้ดที่มีการประมวลผลหลายบรรทัดหรือซับซ้อนมาก แนะนำให้ใช้ฟังก์ชันแบบปกติที่ประกาศด้วย def เพื่อความชัดเจนและอ่านง่าย

การใช้งาน Lambda Function สามารถนำไปประยุกต์ใช้กับฟังก์ชันต่าง ๆ เช่น map(), filter(), sorted(), และสามารถใช้ร่วมกับฟังก์ชันที่ต้องการเงื่อนไขเฉพาะได้อย่างกระชับ

แชร์เรื่องนี้