บทนำ
การหาผลรวมของตัวเลขทั้งหมดในลิสต์ของ tuples สามารถทำได้โดยใช้ map(sum, ...) หาผลรวมแต่ละ tuple ก่อน แล้ว sum() อีกครั้งเพื่อรวมทั้งหมด
ตัวอย่างโค้ด
my_list = [(11, 14), (54, 56), (98, 0), (13, 76)]
print("ลิสต์:", my_list)
# วิธี 1: map + sum
total = sum(map(sum, my_list))
print("ผลรวมทั้งหมด:", total)
# วิธี 2: generator expression (อ่านง่ายกว่า)
total2 = sum(sum(t) for t in my_list)
print("ผลรวม (gen expr):", total2)
# วิธี 3: flatten แล้ว sum (ถ้าต้องการลิสต์รวม)
flat = [x for t in my_list for x in t]
total3 = sum(flat)
print("Flatten แล้ว sum:", total3, flat)
ผลลัพธ์
ลิสต์: [(11, 14), (54, 56), (98, 0), (13, 76)] ผลรวมทั้งหมด: 322 ผลรวม (gen expr): 322 Flatten แล้ว sum: 322 [11, 14, 54, 56, 98, 0, 13, 76]
คำอธิบาย
map(sum, my_list)ใช้ sum กับแต่ละ tuple → ได้ iterator ของผลรวมแต่ละ tuplesum(...)รวมผลรวมทั้งหมด- Generator expression
sum(sum(t) for t in my_list)ทำสิ่งเดียวกันแต่อ่านง่ายกว่า
ขยาย: หาค่าเฉลี่ย, min, max
all_values = [x for t in my_list for x in t]
print("ค่าเฉลี่ย:", sum(all_values) / len(all_values))
print("ค่าต่ำสุด:", min(all_values))
print("ค่าสูงสุด:", max(all_values))