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

Python จัดหมวดหมู่รายการที่กำหนดตามขนาดสตริง


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

มี for loop

เราออกแบบ for loop ซึ่งจะวนซ้ำทุกองค์ประกอบของรายการและเกิดขึ้นเฉพาะกับรายการที่มีความยาวตรงกับความยาวขององค์ประกอบที่มีอยู่

ตัวอย่าง

listA = ['Monday','Thursday','Friday','Saturday','Sunday']
# Given list
print("Given list : \n",listA)
# Categorize by string size
len_comp = lambda x, y: len(x) == len(y)
res = []
for sub_list in listA:
   ele = next((i for i in res if len_comp(sub_list, i[0])), [])
   if ele == []:
      res.append(ele)
   ele.append(sub_list)
# Result
print("The list after creating categories : \n",res)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Given list :
['Monday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
The list after creating categories :
[['Monday', 'Friday', 'Sunday'], ['Thursday', 'Saturday']]

ด้วยการจัดเรียงและจัดกลุ่มตาม

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

ตัวอย่าง

from itertools import groupby
listA = ['Monday','Thursday','Friday','Saturday','Sunday']
# Given list
print("Given list : \n",listA)
# Categorize by string size
get_len = lambda x: len(x)
sub_list = sorted(listA, key = get_len)
res = [list(ele) for i, ele in groupby(sub_list, get_len)]
# Result
print("The list after creating categories : \n",res)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Given list :
['Monday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
The list after creating categories :
[['Monday', 'Friday', 'Sunday'], ['Thursday', 'Saturday']]