เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Map() และ Lambda Functions

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

จากที่เรียนในวิดีโอ map() จะนำฟังก์ชันไปใช้กับอ็อบเจกต์ เช่น ลิสต์ โดยสามารถใช้ lambda functions เพื่อกำหนดฟังก์ชันที่ map() จะใช้ประมวลผลอ็อบเจกต์นั้นได้ ตัวอย่างเช่น:

nums = [2, 4, 6, 8, 10]

result = map(lambda a: a ** 2, nums)

จากตัวอย่างนี้จะเห็นว่า lambda function ที่ยกค่า a กำลัง 2 ถูกส่งเข้าไปใน map() พร้อมกับลิสต์ตัวเลข nums และ map object ที่ได้จากการเรียก map() จะถูกเก็บไว้ในตัวแปร result ตอนนี้จะได้ฝึกใช้ lambda functions ร่วมกับ map() โดยในแบบฝึกหัดนี้ จะนำการทำงานของฟังก์ชัน add_bangs() ที่นิยามไว้ในแบบฝึกหัดก่อนหน้าไปใช้กับลิสต์ของสตริง

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Python เบื้องต้น: การเขียนฟังก์ชัน

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ในการเรียก map() ให้ส่ง lambda function ที่ต่อสตริง '!!!' เข้ากับสตริง item และส่งลิสต์ของสตริง spells เข้าไปด้วย จากนั้นกำหนดผลลัพธ์ที่เป็น map object ให้กับตัวแปร shout_spells
  • แปลง shout_spells ให้เป็นลิสต์ แล้วพิมพ์ลิสต์ดังกล่าวออกมา

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Create a list of strings: spells
spells = ["protego", "accio", "expecto patronum", "legilimens"]

# Use map() to apply a lambda function over spells: shout_spells
____ = map(____, ____)

# Convert shout_spells to a list: shout_spells_list
____

# Print the result
print(shout_spells_list)
แก้ไขและรันโค้ด