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

Python - แปลงคอลัมน์เป็นองค์ประกอบแยกในรายการของรายการ


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

การใช้สไลซ์

เราสามารถแบ่งรายการที่องค์ประกอบบางอย่างเพื่อสร้างโครงสร้างคอลัมน์ ที่นี่เราแปลงรายการที่กำหนดเป็นรายการใหม่โดยที่องค์ประกอบถูกแยกจากตรงกลาง เราฟ้องสองสำหรับลูป ตัวนอกแบ่งองค์ประกอบจากองค์ประกอบที่ศูนย์ไปยังองค์ประกอบที่สอง และองค์ประกอบภายในจากองค์ประกอบที่สองไปยังองค์ประกอบสุดท้าย

ตัวอย่าง

x = [[5,10,15,20],[25,30,35,40],[45,50,55,60]]
#Using list slicing and list comprehension
print ("The Given input is : \n" + str(x))
result = [m for y in [[n[2: ], [n[0:2]]] for n in x] for m in y]
print ("Converting column to separate elements in list of lists : \n" + str(result))

ผลลัพธ์

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

The Given input is :
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]]
Converting column to separate elements in list of lists :
[[15, 20], [[5, 10]], [35, 40], [[25, 30]], [55, 60], [[45, 50]]]

itertools.chain() และรายการความเข้าใจ

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

ตัวอย่าง

from itertools import chain
x = [[5,10,15,20],[25,30,35,40],[45,50,55,60]]
#Using list slicing and list comprehension
print ("The Given input is : \n" + str(x))
res = list(chain(*[list((n[2: ], [n[0:2]]))
   for n in x]))
print ("Converting column to separate elements in list of lists : \n" + str(res))

ผลลัพธ์

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

The Given input is :
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]]
Converting column to separate elements in list of lists :
[[15, 20], [[5, 10]], [35, 40], [[25, 30]], [55, 60], [[45, 50]]]