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

โปรแกรม Python เพื่อแผ่รายการโดยไม่ต้องใช้ Recursion


เมื่อจำเป็นต้องทำให้รายการเรียบโดยไม่ต้องใช้เทคนิคการเรียกซ้ำ สามารถใช้ฟังก์ชันแลมบ์ดา, วิธี "รวม", วิธี "แผนที่" และวิธีการ "อินสแตนซ์" ได้

สามารถใช้รายการเพื่อเก็บค่าที่แตกต่างกัน (เช่น ข้อมูลของประเภทข้อมูลใดๆ เช่น จำนวนเต็ม จุดลอยตัว สตริง และอื่นๆ)

เมธอด 'isinstance' จะตรวจสอบว่าพารามิเตอร์ที่กำหนดเป็นของประเภทข้อมูลเฉพาะหรือไม่

ฟังก์ชันนิรนามเป็นฟังก์ชันที่กำหนดโดยไม่มีชื่อ โดยทั่วไป ฟังก์ชันใน Python ถูกกำหนดโดยใช้คีย์เวิร์ด 'def' แต่ฟังก์ชันที่ไม่ระบุตัวตนถูกกำหนดด้วยความช่วยเหลือของคีย์เวิร์ด 'lambda' ใช้นิพจน์เดียว แต่สามารถรับอาร์กิวเมนต์จำนวนเท่าใดก็ได้ มันใช้นิพจน์และส่งกลับผลลัพธ์ของมัน

ฟังก์ชันแผนที่ใช้ฟังก์ชัน/การทำงานที่กำหนดกับทุกรายการใน iterable (เช่น list, tuple) ส่งคืนรายการเป็นผลลัพธ์

วิธี 'sum' จะเพิ่มค่าตัวเลขที่มีอยู่ใน iterable

ตัวอย่าง

ด้านล่างนี้เป็นการสาธิตสำหรับสิ่งเดียวกัน -

my_list = [[[11,[[32]],[[[53]]]],[[64],75]], [[6, 89, 99]]]
flattened_list = lambda my_list: sum(map(flattened_list,my_list),[]) if isinstance(my_list,list) else [my_list]
print("The original list is : ")
print(my_list)
print("The flattened list is :")
print(flattened_list(my_list))

ผลลัพธ์

The original list is :
[[[11, [[32]], [[[53]]]], [[64], 75]], [[6, 89, 99]]]
The flattened list is :
[11, 32, 53, 64, 75, 6, 89, 99]

คำอธิบาย

  • มีการกำหนดรายการที่ซ้อนกันและแสดงบนคอนโซล
  • องค์ประกอบถูกสรุปโดยใช้วิธี "ผลรวม" และนำไปใช้กับทุกองค์ประกอบโดยใช้วิธี "แผนที่"
  • ผลลัพธ์ของการดำเนินการนี้ถูกกำหนดให้กับตัวแปร
  • แสดงเป็นเอาต์พุตบนคอนโซล