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

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

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

ใช้ Slicing

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

ตัวอย่าง

x = [[5,10,15,20], [25,30,35,40], [45,50,55,60]]
# ใช้ list slicing และ 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() และ list comprehension

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

ตัวอย่าง

from itertools import chain
x = [[5,10,15,20], [25,30,35,40], [45,50,55,60]]
# ใช้ list slicing และ 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]]]