Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

บวก Nested Tuples แบบ Element-wise ใน Python

บทนำ

การบวก 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))