บางครั้งเราอาจต้องทำความสะอาดลิสต์โดยกำจัดองค์ประกอบที่ซ้ำซ้อน ซึ่งสามารถทำได้โดยการผสมผสานเมธอดต่างๆ จากไลบรารีมาตรฐานของ Python
วิธีที่ 1: ใช้ set() และ split()
เมธอด split() ใช้แยกองค์ประกอบเพื่อตรวจสอบค่าซ้ำ ในขณะที่ set() จะเก็บเฉพาะค่าที่ไม่ซ้ำกันจากลิสต์ที่แยกแล้ว
ตัวอย่างโค้ด
# กำหนดลิสต์ต้นฉบับ
listA = ['xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee']
print("Given list : ", listA)
# ใช้ set() และ split() กำจัดซ้ำ
res = [set(sub.split('-')) for sub in listA]
# ผลลัพธ์
print("List after duplicate removal : ", res)
ผลลัพธ์
Given list : ['xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee']
List after duplicate removal : [{'xy'}, {'pq', 'qr'}, {'xp'}, {'ee', 'dd'}]
วิธีที่ 2: ใช้ list comprehension และ set
เราสามารถใช้ list comprehension ร่วมกับ set เพื่อรวมค่าที่ไม่ซ้ำกันจากทุกสตริงในลิสต์ได้ในบรรทัดเดียว
ตัวอย่างโค้ด
listA = ['xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee']
print("Given list : ", listA)
# ใช้ set comprehension ภายใน list()
res = list({i for sub in listA for i in sub.split('-')})
print("List after duplicate removal : ", res)
ผลลัพธ์
Given list : ['xy-xy', 'pq-qr', 'xp-xp-xp', 'dd-ee'] List after duplicate removal : ['dd', 'pq', 'ee', 'xp', 'xy', 'qr']
สรุป: วิธีแรกคืนค่าเป็นลิสต์ของเซต (แยกตามสตริงต้นฉบับ) ส่วนวิธีที่สองรวมค่าที่ไม่ซ้ำกันทั้งหมดเป็นลิสต์เดียว เลือกใช้ตามความต้องการของโปรแกรม