บทนำ
เมื่อต้องการลบ tuple ที่ซ้ำกันออกจากรายการ (list) ของ tuples สามารถใช้วิธีการต่างๆ เช่น ลูป for ร่วมกับฟังก์ชัน any() และ enumerate() เพื่อตรวจสอบและกรองเฉพาะค่าที่ไม่ซ้ำกัน
ตัวอย่างโค้ด
def remove_duplicate_tuples(tuple_list):
"""ลบ tuple ซ้ำ โดยรักษาลำดับเดิม"""
seen = set()
result = []
for tup in tuple_list:
if tup not in seen:
seen.add(tup)
result.append(tup)
return result
# ตัวอย่างข้อมูล
my_list = [(23, 45), (25, 17), (35, 67), (25, 17)]
print("รายการ tuple เดิม:", my_list)
unique_list = remove_duplicate_tuples(my_list)
print("หลังลบค่าซ้ำ:", unique_list)
ผลลัพธ์
รายการ tuple เดิม: [(23, 45), (25, 17), (35, 67), (25, 17)] หลังลบค่าซ้ำ: [(23, 45), (25, 17), (35, 67)]
คำอธิบาย
- ใช้
set()เก็บค่าที่เคยเจอแล้ว เพื่อตรวจสอบความซ้ำได้ใน O(1) - วนลูปผ่านแต่ละ tuple ในลิสต์ ตรวจสอบว่าอยู่ใน set แล้วหรือยัง
- ถ้ายังไม่เคยเจอ ให้เพิ่มเข้า set และเก็บไว้ในผลลัพธ์
- วิธีนี้รักษาลำดับเดิมของข้อมูล (preserve order)
วิธีอื่น (List Comprehension)
# ใช้ list comprehension ร่วมกับ set (สั้นกว่า แต่อ่านยากกว่า) seen = set() unique = [t for t in my_list if not (t in seen or seen.add(t))] print(unique)