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

โปรแกรม Python รatakanested List ด้วย Recursion


เมื่อต้องการร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 และแสดงบนคอนโซล
  • เรียกเมธอดโดยส่งลิสต์เป็นพารามิเตอร์
  • แสดงเอาต์พุทบนคอนโซล