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

รายการที่กำหนดเองแยกเป็น Python


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

มีซิปและสำหรับลูป

ในแนวทางนี้ เราใช้ 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]]