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

Python จัดกลุ่มสตริงย่อยที่คล้ายกันในรายการ


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่จัดกลุ่มสตริงย่อยที่คล้ายกันจากรายการ มาดูตัวอย่างให้เข้าใจกันชัดๆ

อินพุต

สตริง =['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript', 'python-1', 'python-2','javascript-1'] 

ผลลัพธ์

[['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript'], ['python-1', 'python-2'],['javascript-1' ]]

เราจะใช้ จัดกลุ่ม วิธีการจาก itertools โมดูลในการแก้ปัญหา จัดกลุ่ม เมธอดจะจัดกลุ่มสตริงที่คล้ายกันทั้งหมดเป็นอ็อบเจ็กต์ iter สำหรับรายการที่กำหนด เราได้แยกสตริงด้วย - และส่งส่วนแรกของสตริงไปยัง จัดกลุ่มโดย วิธีการ

เรามาดูขั้นตอนที่เกี่ยวข้องในการแก้ปัญหานี้กัน

  • เริ่มต้นรายการสตริง
  • นำเข้าโมดูล itertools
  • เริ่มต้นรายการว่าง
  • ตอนนี้ ส่งสตริงและฟังก์ชันแลมบ์ดาไปที่ itertools.groupby วิธีการ
  • ฟังก์ชัน lambda ควรส่งคืนส่วนแรกของสตริงหลังจากแยกด้วย −
  • กลุ่ม จัดกลุ่ม เมธอดจะส่งคืนรายการของทูเพิลพร้อมกับองค์ประกอบและกลุ่ม
  • ในการทำซ้ำทุกครั้ง ให้แปลงกลุ่มขององค์ประกอบที่คล้ายคลึงกันเป็นรายการ
  • ผนวกรายการเข้ากับรายการที่ว่างเปล่า
  • พิมพ์ผลลัพธ์

ตัวอย่าง

# การนำเข้า itertools moduleimport itertools# การเริ่มต้น stringsstrings =['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript', 'python-1', 'python-2' , 'javascript-1']# รายการที่ว่างเปล่า =[]# iterator# ฟังก์ชัน lambda จะส่งคืนส่วนแรกจาก stringiterator =itertools.groupby(strings, lambda string:string.split('-')[0])# วนซ้ำ องค์ประกอบผลลัพธ์# และองค์ประกอบกลุ่มสำหรับองค์ประกอบ กลุ่มใน iterator:# ต่อท้ายกลุ่มโดยแปลงเป็นรายการ result.append(list(group))# พิมพ์ผลการพิมพ์ (ผลลัพธ์)

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

[['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript'],ython-1', 'python-2'], ['javascript-1']] 

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น