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

Python - จัดกลุ่มสตริงที่ต่อเนื่องกันใน List


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

ตัวอย่าง

ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน

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' และผลลัพธ์ถูกกำหนดให้กับตัวแปร

  • สิ่งนี้จะแสดงเป็นเอาต์พุตบนคอนโซล