บทนำ
การลบ tuple ที่ซ้ำกันออกจากลิสต์ของ tuples สามารถทำได้อย่างง่ายดายโดยแปลงเป็น set (ซึ่งเก็บค่าไม่ซ้ำ) แล้วคืนเป็นลิสต์
ตัวอย่างโค้ด
my_list = [(11, 14), (0, 78), (33, 11), (0, 78)]
print("ลิสต์เดิม:", my_list)
# ใช้ set ลบซ้ำ แล้วแปลงกลับเป็นลิสต์
unique_list = list(set(my_list))
print("หลังลบซ้ำ:", unique_list)
ผลลัพธ์
ลิสต์เดิม: [(11, 14), (0, 78), (33, 11), (0, 78)] หลังลบซ้ำ: [(33, 11), (11, 14), (0, 78)]
คำอธิบาย
- Tuple เป็น hashable จึงใส่ใน set ได้โดยตรง
set(my_list)ลบค่าซ้ำอัตโนมัติlist(...)แปลงกลับเป็นลิสต์
⚠️ ข้อควรระวัง: ลำดับไม่คงที่
Set ไม่รักษาลำดับ element หากต้องการรักษาลำดับเดิม ใช้วิธีดังนี้:
seen = set() unique_ordered = [t for t in my_list if not (t in seen or seen.add(t))] print(unique_ordered) # [(11, 14), (0, 78), (33, 11)]
สรุป
- ไม่สนลำดับ → ใช้
list(set(my_list))(เร็วที่สุด) - ต้องรักษาลำดับ → ใช้ set + list comprehension