บทนำ
การแปลง tuple ของตัวเลขหลายหลักให้กลายเป็นจำนวนเต็มเดียว สามารถทำได้โดยใช้ functools.reduce() ร่วมกับ lambda ฟังก์ชัน เพื่อรวมค่าแต่ละตัวใน tuple เข้าด้วยกัน
ตัวอย่างโค้ด
import functools
my_tuple = (23, 45, 12, 56, 78, 0)
print("Tuple เดิม:", my_tuple)
# ใช้ reduce และ lambda รวมค่า
# สูตร: sub * 10 + elem (shift ซ้ายแล้วบวกค่าใหม่)
result = functools.reduce(lambda sub, elem: sub * 10 + elem, my_tuple)
print("หลังแปลงเป็น integer:", result)
ผลลัพธ์
Tuple เดิม: (23, 45, 12, 56, 78, 0) หลังแปลงเป็น integer: 2768380
คำอธิบาย
functools.reduce()ใช้ฟังก์ชันสะสมค่าผ่านแต่ละ element ใน iterablelambda sub, elem: sub * 10 + elemนำค่าสะสม (sub) คูณ 10 แล้วบวกค่าปัจจุบัน (elem)- ตัวอย่าง: เริ่ม 23 → 23*10+45=275 → 275*10+12=2762 → ... → 2768380
- วิธีนี้สมมติว่าแต่ละ element ใน tuple เป็น "หลัก" ของตัวเลข (ไม่ใช่ตัวเลขหลายหลัก)
ข้อควรระวัง
หาก tuple มีค่า เช่น (12, 34) จะได้ 154 (12*10+34) ไม่ใช่ 1234 หากต้องการต่อสตริงควรใช้ int(''.join(map(str, tup)))