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