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

การหาร Tuple แบบ Element-wise ใน Python

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()
  • เก็บผลลัพธ์และแสดง

การคำนวณแบบละเอียด

IndexTuple 1Tuple 2Floor Division
0797 // 9 = 0
1868 // 6 = 1
2383 // 8 = 0
3424 // 2 = 2
4313 // 1 = 3
5242 // 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)