หัดเขียน Python การใช้งาน Lambda และ Filter

หัดเขียน Python การใช้งาน Lambda และ Filter

ในภาษา python นั้นต้องบอกว่ามี function build in ที่ทำให้สะดวกสบายและประหยัดเวลาในการพัฒนา function เล็กๆน้อยไปเยอะพอสมควรซึ่ง วันนี้จะเสนอลูกเล่น 2 อย่างคือ Lambda และ Filter

เริ่มต้นด้วย lambda ใน python การใช้ lambda เพื่อทำการสร้างฟังก์ชั่น anonymous ทำให้เราสามารถสร้างฟังก์ชั่นง่ายๆเก็บในตัวแปรได้เลย ไม่จำเป็นต้องนั่ง def function ขึ้นมา แต่ก็ต้องระวังเรื่องความสับสนของโค้ดที่เขียนด้วยนะครับ เอาเป็นว่าเรามาดูตัวอย่างกันเลยดีกว่า โดยมีโค้ดดังนี้

a = lambda x, y : x+y
b = lambda x : x*x

print("lambda x, y: x+y ", a(2,5))
print("lambda x: x * x" , b(5))

เมื่อลองรันโค้ดดู

หัดเขียน Python การใช้งาน Lambda และ Filter

จะได้ผลลัพธ์ดังดู จะเห็นว่าการใช้งาน lambda นั้นเราสามารถประกาศได้โดย param ที่จะส่งเข้าไป anonymous function จะมีกี่ตัวก็ได้ แต่จะเริ่มตัวแรกหลังคำว่า lambda และตัวสุดท้ายคือก็จะเริ่มเครื่องหมาย : หลังจากเครื่องหมาย : จะเป็นการทำงานและค่าที่ return ออกมาโดย anonymous function จะต้อง return ค่าได้เพียงค่าเดียวเท่านั้น

หัดเขียน Python การใช้งาน Lambda และ Filter

จากรูปกรอบสีแดงคือ param ส่วนกรอบสีเขียวคือค่าที่ return ออกมา ส่วนการเอาไปใช้งานก็ต้องมีตัวแปรมารองรับและ call ผ่านตัวแปรที่เก็บค่า lambda เลย

การใช้งาน lambda ก็จะมีประมาณนี้ครับ

ต่อมาก็จะเป็นการใช้ Filter ซึ่งจะเป็น function ในการช่วยกรองข้อมูลเรียกว่าสะดวกมากเลย มาดูตัวอย่างโค้ดกันเลยครับ

data_test = [2,4,5,6,7,0,8,9,10]
print(list(filter(lambda x:x>4, data_test)))
result = list(filter(lambda x:x>3, data_test))
print(result)

 

หัดเขียน Python การใช้งาน Lambda และ Filter

การทำงานของ Filter จะได้ข้อมูลออกมาเป็น Filter Object ซึ่งเราต้องทำการแปลงเป็น list เหมือนในโค้ดตัวอย่าง ซึ่งในการใส่เงื่อนไขต้องใส่เป็น lambda เช่นในตัวอย่างต้องการข้อมูลใน data_test ที่ > 4 เราก็ใส่คำสั่ง filter(lambda x: x > 4, data_test) เพราะฉะนั้นการจะใช้ Filter ได้ต้องทำเข้าใจ lambda ซะก่อน เมื่อเราทำการแปลงผลลัพธ์ออกมาเป็น list แล้วจะเห็นว่า แทนที่เราจะวนลูปเพื่อแล้วเช็คเงื่อนไข เพื่อให้ได้ข้อมูลที่ต้องการ เราสามารถลดการเขียนโค้ดส่วนนั้นไปได้เลย แค่ใช้  Lambda กับ Filter แค่นั้นเอง ผมก็ขอจบบทความนี้ไว้เพียงเท่านี้นะครับ

 

Add a Comment

Your email address will not be published. Required fields are marked *