เมื่อจำเป็นต้องทำให้รายการที่ซ้อนกันที่กำหนดเรียบเรียงโดยใช้เทคนิคการเรียกซ้ำ สามารถใช้การจัดทำดัชนีอย่างง่าย และวิธีการ 'isinstance' ร่วมกับการเรียกซ้ำได้
การเรียกซ้ำจะคำนวณเอาต์พุตของบิตขนาดเล็กของปัญหาที่ใหญ่กว่า และรวมบิตเหล่านี้เข้าด้วยกันเพื่อแก้ปัญหาที่ใหญ่กว่า
ตัวอย่าง
ด้านล่างนี้เป็นการสาธิตสำหรับสิ่งเดียวกัน -
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' ซึ่งรับรายการเป็นพารามิเตอร์
- ตรวจสอบเพื่อดูประเภทข้อมูลขององค์ประกอบแรกในรายการ
- หากตรงกับรายการ องค์ประกอบแรกพร้อมกับองค์ประกอบที่สองไปยังองค์ประกอบสุดท้ายจะถูกเชื่อมและแสดง
- ส่งผลให้รายการที่ซ้อนกันถูกทำให้เรียบ
- มิฉะนั้น องค์ประกอบแรกจะถูกละทิ้ง และรายการจะถูกกลับรายการก่อน และรายการปกติจะถูกรวมเข้าด้วยกัน และส่งคืนเป็นผลลัพธ์
- นอกฟังก์ชัน มีการกำหนดรายการที่ซ้อนกันและแสดงบนคอนโซล
- เมธอดนี้เรียกโดยส่งรายการเป็นพารามิเตอร์
- ผลลัพธ์จะแสดงบนคอนโซล