รายการในหลามยังสามารถมีรายการอยู่ภายในเป็นองค์ประกอบ รายการที่ซ้อนกันเหล่านี้เรียกว่ารายการย่อย ในบทความนี้ เราจะแก้ปัญหาความท้าทายในการดึงเฉพาะองค์ประกอบสุดท้ายของแต่ละรายการย่อยในรายการที่กำหนด
ใช้สำหรับวนซ้ำ
เป็นวิธีที่ง่ายมากที่เราวนซ้ำรายการย่อยที่ดึงรายการที่ดัชนี -1 ในนั้น ใช้ for loop เพื่อจุดประสงค์นี้ดังที่แสดงด้านล่าง
ตัวอย่าง
Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12,3,7]] print("Given List:\n",Alist) print("Lastst Items from sublists:\n") for item in Alist: print((item[-1]))
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
Given List: [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]] First Items from sublists: 1 Fri 7
การใช้ zip และ *
* ช่วยให้เราสามารถแกะรายการย่อยและให้การเข้าถึงองค์ประกอบแต่ละรายการของรายการย่อย ดังนั้นในกรณีนี้ เราจะใช้ * และกลับรายการเพื่อเข้าถึงองค์ประกอบที่ดัชนี 0 จากแต่ละองค์ประกอบ จากนั้นเราก็ซิปผลลัพธ์เพื่อรับรายการองค์ประกอบแรกจากรายการย่อย
ตัวอย่าง
Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12,3,7]] print("Given List:\n",Alist) print("\n First Items from sublists:\n") print(list(list(zip(*map(reversed,Alist)))[0]))
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
Given List: [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]] First Items from sublists: [1, 'Fri', 7]
การใช้ itemgetter
itemgetter(i) สร้าง callable ที่รับวัตถุ iterable เช่น dictionary,list, tuple เป็นต้น เป็นอินพุต และดึงองค์ประกอบ i-th ออกมา เราจึงสามารถใช้วิธีนี้ในการรับรายการแรกของรายการโดยใช้ฟังก์ชันแผนที่ดังนี้
ตัวอย่าง
from operator import itemgetter Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12,3,7]] print("Given List:\n",Alist) print("\n First Items from sublists:\n") print(list(map(itemgetter(-1), Alist)))
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
Given List: [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]] First Items from sublists: [1, 'Fri', 7]