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

ดึงสมาชิกตัวสุดท้ายของทุก Sublist ใน Python

ภาพรวม

บทความสอน 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]

อธิบาย:

  1. map(reversed, Alist) กลับแต่ละ sublist
  2. * unpack ส่งเป็น arguments ให้ zip
  3. zip จับกลุ่มตัวแรกของแต่ละ sublist ที่กลับแล้ว (คือตัวสุดท้ายเดิม)
  4. [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 เล็กน้อย เหมาะสำหรับข้อมูลมาก