Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python เพื่อแผ่รายการที่ซ้อนกันโดยใช้ Recursion


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