รายการที่ซ้อนกันคือรายการที่มีองค์ประกอบเป็นรายการเอง หากเรามีที่เก็บข้อมูลหลามซึ่งเป็นรายการที่ซ้อนกัน บางครั้งเราอาจจำเป็นต้องแปลงเป็นรายการแบบแบนเพื่อให้สามารถประมวลผลแต่ละองค์ประกอบเพิ่มเติมได้
แม้แต่องค์ประกอบภายในก็สามารถซ้อนกันได้ และสามารถทำรังได้หลายชั้น ดังนั้นเราจะแก้ไขปัญหานี้ด้วยการเรียกซ้ำ เราจะตรวจสอบต่อไปว่าองค์ประกอบนั้นซ้อนกันหรือไม่ จากนั้นจึงใช้ฟังก์ชันนี้ซ้ำแล้วซ้ำเล่าจนกว่าองค์ประกอบนั้นจะไม่อยู่ในรายการอีกต่อไป เมื่อพบว่าองค์ประกอบนั้นไม่ใช่รายการ เราจะผนวกเข้ากับรายการใหม่ซึ่งจะเก็บองค์ประกอบที่ไม่ซ้อนกันทั้งหมดของรายการ
ตัวอย่าง
listA = [[43, [0]],12, 19, [13,[8, 8]], 21 ]
print('Given nested list: \n', listA)
# Flat List
res = []
# function
def flatlist(l):
for x in l:
if type(x) == list:
flatlist(x)
else:
res.append(x)
flatlist(listA)
print('Flattened List created: \n', res) ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
Given nested list: [[43, [0]], 12, 19, [13, [8, 8]], 21] Flattened List created: [43, 0, 12, 19, 13, 8, 8, 21]