Pairwise Addition ใน Tuple
เมื่อต้องการบวก Element ที่อยู่ติดกันใน Tuple (Pairwise Addition) สามารถใช้ zip(), tuple() และ Generator Expression ได้
ตัวอย่างโค้ด
my_tuple = (67, 45, 34, 56, 99, 123, 0, 56)
print("The tuple is : ")
print(my_tuple)
# zip กับ tuple เดียวกันแต่ข้ามตัวแรก
my_result = tuple(i + j for i, j in zip(my_tuple, my_tuple[1:]))
print("The tuple after addition is : ")
print(my_result)
ผลลัพธ์
The tuple is : (67, 45, 34, 56, 99, 123, 0, 56) The tuple after addition is : (112, 79, 90, 155, 222, 123, 56)
คำอธิบาย
- สร้าง Tuple และแสดงผล
zip(my_tuple, my_tuple[1:])จับคู่ Element ติดกัน: (67,45), (45,34), (34,56), ...- Generator Expression บวกค่าคู่กัน (
i + j) - แปลงเป็น Tuple ด้วย
tuple() - เก็บผลลัพธ์และแสดง
การคำนวณแบบละเอียด
| Pair | Element 1 | Element 2 | Sum |
|---|---|---|---|
| (67, 45) | 67 | 45 | 112 |
| (45, 34) | 45 | 34 | 79 |
| (34, 56) | 34 | 56 | 90 |
| (56, 99) | 56 | 99 | 155 |
| (99, 123) | 99 | 123 | 222 |
| (123, 0) | 123 | 0 | 123 |
| (0, 56) | 0 | 56 | 56 |
Operation อื่นๆ แบบ Pairwise
t = (67, 45, 34, 56, 99, 123, 0, 56)
# ลบ (Difference)
diff = tuple(j - i for i, j in zip(t, t[1:]))
print("Difference:", diff) # (-22, -11, 22, 43, 24, -123, 56)
# คูณ
prod = tuple(i * j for i, j in zip(t, t[1:]))
print("Product:", prod) # (3015, 1530, 1904, 5544, 12177, 0, 0)
# หาร (Floor)
div = tuple(j // i for i, j in zip(t, t[1:]) if i != 0)
print("Division:", div) # (0, 0, 1, 1, 1, 0) - skip division by zero
ใช้ itertools.pairwise (Python 3.10+)
from itertools import pairwise
my_result = tuple(a + b for a, b in pairwise(my_tuple))
print(my_result) # (112, 79, 90, 155, 222, 123, 56)
# pairwise ใส่ใจง่ายกว่า zip(t, t[1:])