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