reduce() และ lambda functions
ตอนนี้คุณเชี่ยวชาญการใช้ lambda functions มากขึ้นแล้ว มาทำความรู้จักกับอีกหนึ่งฟังก์ชันที่มีประโยชน์กัน ฟังก์ชัน reduce() เหมาะสำหรับการประมวลผลข้อมูลในลิสต์ และต่างจาก map() กับ filter() ตรงที่คืนค่าเพียงค่าเดียว ในการใช้ reduce() ต้อง import มาจากโมดูล functools ก่อน
จำ gibberish() จากแบบฝึกหัดก่อนหน้าได้ไหม?
# Define gibberish
def gibberish(*args):
"""Concatenate strings in *args together."""
hodgepodge = ''
for word in args:
hodgepodge += word
return hodgepodge
gibberish() รับลิสต์ของสตริงเป็น argument แล้วคืนค่าเป็นสตริงที่เชื่อมทุกตัวเข้าด้วยกันเป็นค่าเดียว ในแบบฝึกหัดนี้ จะนำฟังก์ชันการทำงานแบบเดียวกันนี้มาสร้างใหม่โดยใช้ reduce() ร่วมกับ lambda function สำหรับเชื่อมสตริง
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้น: การเขียนฟังก์ชัน
คำแนะนำการฝึกหัด
- Import ฟังก์ชัน
reduceจากโมดูลfunctools - ในการเรียกใช้
reduce()ให้ส่ง lambda function ที่รับ argument สตริงสองตัวคือitem1และitem2แล้วเชื่อมเข้าด้วยกัน พร้อมส่งลิสต์ของสตริงstarkเข้าไปด้วย จากนั้นกำหนดผลลัพธ์ให้กับตัวแปรresultโดย argument แรกของreduce()คือ lambda function และ argument ที่สองคือลิสต์stark
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import reduce from functools
# Create a list of strings: stark
stark = ['robb', 'sansa', 'arya', 'brandon', 'rickon']
# Use reduce() to apply a lambda function over stark: result
result = reduce(____, ____)
# Print the result
print(result)