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

ดึงคอลัมน์สุดท้ายของแต่ละแถวใน Multi-sized Matrix

แนวคิด

จาก matrix ที่แต่ละแถวมีความยาวต่างกัน (jagged array) ให้ดึงสมาชิกตัวสุดท้ายของแต่ละแถว ใช้ negative indexing [-1]

ตัวอย่างโค้ด

my_list = [[41, 65, 25], [45, 89], [12, 65, 75, 36, 58], [49, 12, 36, 98], [47, 69, 78]]
print("Matrix:", my_list)

my_list.sort()
print("หลังเรียง:", my_list)

my_result = [row[-1] for row in my_list]
print("คอลัมน์สุดท้ายแต่ละแถว:", my_result)

my_result.sort()
print("หลังเรียง:", my_result)

ผลลัพธ์

Matrix: [[41, 65, 25], [45, 89], [12, 65, 75, 36, 58], [49, 12, 36, 98], [47, 69, 78]]
หลังเรียง: [[12, 65, 75, 36, 58], [41, 65, 25], [45, 89], [47, 69, 78], [49, 12, 36, 98]]
คอลัมน์สุดท้ายแต่ละแถว: [58, 25, 89, 78, 98]
หลังเรียง: [25, 58, 78, 89, 98]

คำอธิบาย

  • row[-1] เข้าถึงสมาชิกสุดท้ายของแต่ละแถว
  • ทำงานได้แม้แถวมีความยาวต่างกัน
  • การ sort matrix จะเรียงตาม lexicographic order (เปรียบเทียบสมาชิกแรกก่อน)

การจัดการแถวว่าง

# ถ้ามีแถวว่าง [] จะ error IndexError
# ป้องกันด้วย:
my_result = [row[-1] for row in my_list if row]  # ข้ามแถวว่าง