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

หา Elements ที่ต่างกัน (Dissimilar) ระหว่างสอง Tuples ใน Python

บทนำ

การหา 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

OperatorMethodความหมาย
&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)