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

การลบซ้ำซ้อนในลิสต์สตริงด้วย Python

บางครั้งเราอาจต้องทำความสะอาดลิสต์โดยกำจัดองค์ประกอบที่ซ้ำซ้อน ซึ่งสามารถทำได้โดยการผสมผสานเมธอดต่างๆ จากไลบรารีมาตรฐานของ 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']

สรุป: วิธีแรกคืนค่าเป็นลิสต์ของเซต (แยกตามสตริงต้นฉบับ) ส่วนวิธีที่สองรวมค่าที่ไม่ซ้ำกันทั้งหมดเป็นลิสต์เดียว เลือกใช้ตามความต้องการของโปรแกรม