เมื่อต้องการรatakanested list ที่กำหนดโดยใช้ Recursion สามารถใช้ indexing ธรรมดา และเมธอด 'isinstance' ร่วมกับ Recursion ได้
Recursion คำนวณผลลัพธ์ของส่วนเล็กๆ ของปัญหาใหญ่ และรวมส่วนเหล่านี้เพื่อให้คำตอบของปัญหาใหญ่
ตัวอย่าง
def flatten_list(my_list):
if my_list == []:
return my_list
if isinstance(my_list[0], list):
return flatten_list(my_list[0]) + flatten_list(my_list[1:])
return my_list[:1] + flatten_list(my_list[1:])
my_list = [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]]
print("The list is :")
print(my_list)
print("The list after flattening is : ")
print(flatten_list(my_list))
ผลลัพธ์
The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]
คำอธิบาย
- กำหนดเมธอด 'flatten_list' รับลิสต์เป็นพารามิเตอร์
- ตรวจสอบชนิดข้อมูลขององค์ประกอบแรกในลิสต์
- หากตรงกับลิสต์ ให้องค์ประกอบแรกร่วมกับองค์ประกอบที่สองถึงสุดท้าย ต่อกันและแสดง
- ผลคือ nested list ถูกแบน
- มิฉะนั้น ทิ้งองค์ประกอบแรก และลิสต์ถูกกลับลำดับและรวมกับลิสต์ปกติ คืนค่าเป็นเอาต์พุท
- นอกฟังก์ชัน กำหนด nested list และแสดงบนคอนโซล
- เรียกเมธอดโดยส่งลิสต์เป็นพารามิเตอร์
- แสดงเอาต์พุทบนคอนโซล