ภาพรวม
บทความสอน 3 วิธีดึงสมาชิกตัวสุดท้าย (index -1) จากทุก sublist ในลิสต์ซ้อน (nested list)
ตัวอย่างข้อมูล
Alist = [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]]
ผลลัพธ์ที่ต้องการ: [1, 'Fri', 7]
วิธี 1: For Loop (เข้าใจง่ายที่สุด)
Alist = [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]]
for item in Alist:
print(item[-1])
# Output: 1, Fri, 7
วิธี 2: ใช้ zip และ * (Unpacking)
Alist = [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]] result = list(list(zip(*map(reversed, Alist)))[0]) print(result) # [1, 'Fri', 7]
อธิบาย:
map(reversed, Alist)กลับแต่ละ sublist*unpack ส่งเป็น arguments ให้ zipzipจับกลุ่มตัวแรกของแต่ละ sublist ที่กลับแล้ว (คือตัวสุดท้ายเดิม)[0]เลือกกลุ่มแรก
วิธี 3: ใช้ operator.itemgetter
from operator import itemgetter Alist = [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]] result = list(map(itemgetter(-1), Alist)) print(result) # [1, 'Fri', 7]
itemgetter(-1) สร้างฟังก์ชันดึง index -1, map ใช้กับทุก sublist
สรุป
- For loop: อ่านง่าย ใช้ได้ทั่วไป
- zip + reversed: เทคนิค functional programming
- itemgetter: เร็วกว่า lambda เล็กน้อย เหมาะสำหรับข้อมูลมาก