บทนำ
การบวก nested tuples (tuple ของ tuples) แบบ element-wise คือการบวกค่าที่ตำแหน่งตรงกันในแต่ละ inner tuple สามารถทำได้ด้วย zip() ร่วมกับ generator expression
ตัวอย่างโค้ด
tuple1 = ((7, 8), (3, 4), (3, 2))
tuple2 = ((9, 6), (8, 2), (1, 4))
print("Tuple 1:", tuple1)
print("Tuple 2:", tuple2)
# zip outer tuples แล้ว zip inner tuples บวกคู่ละคู่
result = tuple(
tuple(a + b for a, b in zip(inner1, inner2))
for inner1, inner2 in zip(tuple1, tuple2)
)
print("ผลบวก:", result)
ผลลัพธ์
Tuple 1: ((7, 8), (3, 4), (3, 2)) Tuple 2: ((9, 6), (8, 2), (1, 4)) ผลบวก: ((16, 14), (11, 6), (4, 6))
คำอธิบาย
zip(tuple1, tuple2)จับคู่ inner tuples ตามตำแหน่ง: ((7,8), (9,6)), ((3,4), (8,2)), ...zip(inner1, inner2)จับคู่ element ในแต่ละ inner tuple: (7,9), (8,6) ฯลฯa + b for a, b in ...บวกคู่ละคู่- Generator expression สร้าง tuple ใหม่ทีละระดับ
เงื่อนไข
- ทั้งสอง nested tuple ต้องมีโครงสร้างเหมือนกัน (จำนวน inner tuples และขนาด inner tuples เท่ากัน)
- zip จะหยุดที่สั้นกว่า หากขนาดไม่เท่ากัน
ใช้ NumPy (แนะนำสำหรับ matrix ใหญ่)
import numpy as np arr1 = np.array(tuple1) arr2 = np.array(tuple2) result = tuple(map(tuple, arr1 + arr2)) print(result) # ((16, 14), (11, 6), (4, 6))