บทนำ
การหา elements ที่อยู่ใน tuple ไหน tuple หนึ่งแต่ไม่อยู่ในอีก tuple (Symmetric Difference) สามารถทำได้โดยแปลงเป็น set แล้วใช้ตัวดำเนินการ ^ (XOR)
ตัวอย่างโค้ด
tuple1 = ((7, 8), (3, 4), (3, 2))
tuple2 = ((9, 6), (8, 2), (1, 4))
print("Tuple 1:", tuple1)
print("Tuple 2:", tuple2)
# หา elements ที่ต่างกัน (อยู่ในอันใดอันหนึ่ง แต่ไม่ใช่ทั้งสอง)
dissimilar = tuple(set(tuple1) ^ set(tuple2))
print("Elements ที่ต่างกัน:", dissimilar)
ผลลัพธ์
Tuple 1: ((7, 8), (3, 4), (3, 2)) Tuple 2: ((9, 6), (8, 2), (1, 4)) Elements ที่ต่างกัน: ((3, 4), (9, 6), (1, 4), (8, 2), (3, 2), (7, 8))
คำอธิบาย
set(tuple1) ^ set(tuple2)= Symmetric Difference = (A - B) ∪ (B - A)- คืนค่า elements ที่อยู่ใน A หรือ B เพียงอย่างใดอย่างหนึ่ง
- ลำดับในผลลัพธ์ไม่คงที่ (เพราะ set)
操作อื่นๆ ของ Set
| Operator | Method | ความหมาย |
|---|---|---|
& | intersection() | ส่วนร่วม (อยู่ในทั้งสอง) |
| | union() | รวม (อยู่ในอย่างน้อยหนึ่ง) |
- | difference() | อยู่ใน A แต่ไม่อยู่ใน B |
^ | symmetric_difference() | อยู่ในอันใดอันหนึ่งอย่างเดียว |
กรณีรักษาลำดับ
# ใช้ list comprehension ตรวจสอบ membership
seen2 = set(tuple2)
seen1 = set(tuple1)
ordered_diff = tuple(x for x in tuple1 if x not in seen2) + \
tuple(x for x in tuple2 if x not in seen1)
print(ordered_diff)