ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่จัดกลุ่มสตริงย่อยที่คล้ายกันจากรายการ มาดูตัวอย่างให้เข้าใจกันชัดๆ
อินพุต
สตริง =['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']]
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น