เมื่อจำเป็นต้องจัดกลุ่มองค์ประกอบที่อยู่ติดกันของสตริงที่อยู่ในรายการ จะมีการกำหนดวิธีการที่ใช้ "จัดกลุ่มตาม" และ "ผลตอบแทน"
ตัวอย่าง
ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน
from itertools import groupby def string_check(elem): return isinstance(elem, str) def group_string(my_list): for key, grp in groupby(my_list, key=string_check): if key: yield list(grp) else: yield from grp my_list = [52, 11, 'py', 'th', 'on', 11, 52, 'i', 's', 18, 'f', 'un', 99] print("The list is :") print(my_list) my_result = [*group_string(my_list)] print("The result is:") print(my_result)
ผลลัพธ์
The list is : [52, 11, 'py', 'th', 'on', 11, 52, 'i', 's', 18, 'f', 'un', 99] The result is: [52, 11, ['py', 'th', 'on'], 11, 52, ['i', 's'], 18, ['f', 'un'], 99]
คำอธิบาย
-
มีการกำหนดเมธอดที่ชื่อว่า 'string_check' ซึ่งรับรายการเป็นพารามิเตอร์และตรวจสอบเพื่อดูว่าเป็นของประเภทอินสแตนซ์บางประเภทหรือไม่
-
มีการกำหนดวิธีการอื่นที่ชื่อว่า 'group_string' ซึ่งรับรายการเป็นพารามิเตอร์และใช้ผลตอบแทนเพื่อส่งคืนผลลัพธ์โดยใช้วิธี 'groupby'
-
นอกเมธอด รายการถูกกำหนดและแสดงบนคอนโซล
-
มีการเรียก 'group_string' และผลลัพธ์ถูกกำหนดให้กับตัวแปร
-
สิ่งนี้จะแสดงเป็นเอาต์พุตบนคอนโซล