บางครั้งเราต้องการแปลงสมาชิกใน List ให้แต่ละตัวกลายเป็น List เอง ในทางอื่นคือการสร้าง List ที่มีโครงสร้างซ้อน (nested) โดยสมาชิกของมันก็คือ List เช่นกัน
ใช้การวนลูป (Iteration)
วิธีนี้คือการนำแต่ละสมาชิกของ List มาแปลงเป็นรูปแบบ List โดยใช้ List ชั่วคราว (temporary list) จากนั้นรวม List เหล่านี้เข้าด้วยกันเพื่อสร้าง List ของ List ตามที่ต้องการ
ตัวอย่าง
listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
print("List ที่กำหนด:\n", listA)
new_list = [] # สร้างรูปแบบ List of list
for elem in listA:
temp = elem.split(', ')
new_list.append((temp))
# List ตัวสุดท้าย
res = []
for elem in new_list:
temp = []
for e in elem:
temp.append(e)
res.append(temp)
# แสดงผล
print("List ของ List:\n", res)
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลดังนี้ −
List ที่กำหนด: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] List ของ List: [['Mon'], ['Tue'], ['Wed'], ['Thu'], ['Fri']]
ใช้โมดูล ast (Abstract Syntax Trees)
เราสามารถใช้โมดูล Python ชื่อ ast ซึ่งมีฟังก์ชัน literal_eval() ที่จะรักษาสมาชิกของ List ที่กำหนดไว้และแปลงเป็น List ใหม่
ตัวอย่าง
import ast
listA = ['"Mon","Tue"', '"Wed","Thu","Fri"']
print("List ที่กำหนด: \n", listA)
res = [list(ast.literal_eval(x)) for x in listA] # List ใหม่
print("List ของ List:\n", res)
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลดังนี้ −
List ที่กำหนด: ['"Mon","Tue"', '"Wed","Thu","Fri"'] List ของ List: [['Mon', 'Tue'], ['Wed', 'Thu', 'Fri']]