การวิเคราะห์ข้อมูลทำให้เกิดสถานการณ์ที่ซับซ้อนซึ่งข้อมูลจำเป็นต้องถูกโต้แย้งเพื่อย้ายไปมา ในบริบทนี้ เรามาดูกันว่าเราจะนำรายการใหญ่ๆ และแบ่งออกเป็นรายการย่อยต่างๆ ตามความต้องการได้อย่างไร ในบทความนี้เราจะสำรวจแนวทางเพื่อให้บรรลุสิ่งนี้
มีซิปและสำหรับลูป
ในแนวทางนี้ เราใช้ list dicing เพื่อรับองค์ประกอบจากจุดที่ต้องมีการแยก จากนั้นเราใช้ zip และ for loop เพื่อสร้างรายการย่อยโดยใช้ for loop
ตัวอย่าง
Alist = ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4] # The indexes to split at split_points = [2, 5, 8] # Given list print("Given list : " + str(Alist)) # SPlit at print("The points of splitting : ",split_points) #Perform the split split_list = [Alist[i: j] for i, j in zip([0] + split_points, split_points + [None])] # printing result print("The split lists are : ", split_list)
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
Given list : ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4] The points of splitting : [2, 5, 8] The split lists are : [['Mon', 'Tue'], ['Wed', 6, 7], ['Thu', 'Fri', 11], [21, 4]]
การใช้โซ่และซิป
ฟังก์ชันลูกโซ่สร้างตัววนซ้ำที่ส่งคืนองค์ประกอบจากการวนซ้ำครั้งแรกจนหมด ดังนั้นมันจึงทำเครื่องหมายจุดที่เกิดการแตกแยก จากนั้นเราใช้ฟังก์ชัน zip เพื่อรวมผลลัพธ์ของการแยกย่อยเป็นรายการย่อย
ตัวอย่าง
from itertools import chain Alist = ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4] # The indexes to split at split_points = [2, 5, 8] # Given list print("Given list : ", str(Alist)) # Split at print("The points of splitting : ",split_points) # to perform custom list split sublists = zip(chain([0], split_points), chain(split_points, [None])) split_list = list(Alist[i : j] for i, j in sublists) # printing result print("The split lists are : ", split_list)
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
Given list : ['Mon', 'Tue', 'Wed', 6, 7, 'Thu', 'Fri', 11, 21, 4] The points of splitting : [2, 5, 8] The split lists are : [['Mon', 'Tue'], ['Wed', 6, 7], ['Thu', 'Fri', 11], [21, 4]]