Tuple Division (Element-wise) ใน Python
เมื่อต้องการหาร Tuple สองตัวแบบ Element-wise (หารค่าที่ Index ตรงกัน) สามารถใช้ zip() และ Generator Expression ได้
Operator // (Floor Division)
ใช้ // สำหรับการหารแบบปัดทิ้งเศษ (Floor Division) คืนค่า Integer
ตัวอย่างโค้ด
my_tuple_1 = (7, 8, 3, 4, 3, 2)
my_tuple_2 = (9, 6, 8, 2, 1, 4)
print("The first tuple is : ")
print(my_tuple_1)
print("The second tuple is : ")
print(my_tuple_2)
# zip จับคู่ แล้วหารแบบ Floor Division
my_result = tuple(elem_1 // elem_2 for elem_1, elem_2 in zip(my_tuple_1, my_tuple_2))
print("The divided tuple value is : ")
print(my_result)
ผลลัพธ์
The first tuple is : (7, 8, 3, 4, 3, 2) The second tuple is : (9, 6, 8, 2, 1, 4) The divided tuple value is : (0, 1, 0, 2, 3, 0)
คำอธิบาย
- กำหนด Tuple 2 ตัว ความยาวเท่ากัน และแสดงผล
- ใช้
zip()จับคู่ Element ที่ Index ตรงกัน - Generator Expression หารแบบ Floor Division (
elem_1 // elem_2) - แปลงเป็น Tuple ด้วย
tuple() - เก็บผลลัพธ์และแสดง
การคำนวณแบบละเอียด
| Index | Tuple 1 | Tuple 2 | Floor Division |
|---|---|---|---|
| 0 | 7 | 9 | 7 // 9 = 0 |
| 1 | 8 | 6 | 8 // 6 = 1 |
| 2 | 3 | 8 | 3 // 8 = 0 |
| 3 | 4 | 2 | 4 // 2 = 2 |
| 4 | 3 | 1 | 3 // 1 = 3 |
| 5 | 2 | 4 | 2 // 4 = 0 |
การหารแบบทศนิยม (True Division)
# ใช้ / แทน //
my_result = tuple(elem_1 / elem_2 for elem_1, elem_2 in zip(my_tuple_1, my_tuple_2))
print(my_result) # (0.777..., 1.333..., 0.375, 2.0, 3.0, 0.5)
กรณีหารด้วยศูนย์
t1 = (10, 20, 30)
t2 = (2, 0, 5)
# จะเกิด ZeroDivisionError
# ควรเพิ่มเงื่อนไข
result = tuple(a // b if b != 0 else float('inf') for a, b in zip(t1, t2))
print(result) # (5, inf, 6)
ใช้ NumPy สำหรับข้อมูลขนาดใหญ่
import numpy as np
t1 = (7, 8, 3, 4, 3, 2)
t2 = (9, 6, 8, 2, 1, 4)
result = tuple(np.array(t1) // np.array(t2))
print(result) # (0, 1, 0, 2, 3, 0)