พิจารณาสองลิสต์ องค์ประกอบในลิสต์ที่สองเป็นตัวเลขที่ต้องพิจารณาเป็นตำแหน่งดัชนีสำหรับองค์ประกอบของลิสต์แรก สำหรับสถานการณ์นี้เรามีโปรแกรม Python ด้านล่าง
ด้วย map และ getitem
เราสามารถใช้เมธอดเวทมนตร์ getitem ซึ่งใช้เข้าถึงไอเทมของลิสต์ เราสามารถใช้ร่วมกับฟังก์ชัน map เพื่อให้ได้ผลลัพธ์จากลิสต์แรกที่รับองค์ประกอบจากลิสต์ที่สองเป็นดัชนี
ตัวอย่าง
listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
listB = [0, 1, 3]
print("Given list A:", listA)
print("Given list B:", listB)
res = list(map(listA.__getitem__, listB))
print("Result :", res)
Output
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้ -
Given list A: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] Given list B: [0, 1, 3] Result : ['Mon', 'Tue', 'Thu']
ด้วย itemgetter
โมดูล operator มีเมธอด itemgetter ที่สามารถใช้เพื่อวัตถุประสงค์นี้ ในโปรแกรมด้านล่างเราขยายลิสต์ที่สองเป็นดัชนีและใช้ฟังก์ชัน itemgetter เพื่อได้องค์ประกอบที่ตรงกันจากลิสต์
ตัวอย่าง
from operator import itemgetter
listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
listB = [0, 1, 3]
print("Given list A:", listA)
print("Given list B:", listB)
res = list((itemgetter(*listB)(listA)))
print("Result :", res)
Output
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้ -
Given list A: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] Given list B: [0, 1, 3] Result : ['Mon', 'Tue', 'Thu']
ด้วย numpy
ไลบรารี numpy สามารถบรรลุเป้าหมายนี้โดยเพียงสร้างอาร์เรย์โดยรับสองลิสต์เป็นพารามิเตอร์อินพุท ผลลัพธ์ถูกแปลงกลับเป็นลิสต์อีกครั้ง
ตัวอย่าง
import numpy as np
listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
listB = [0, 1, 3]
print("Given list A:", listA)
print("Given list B:", listB)
res = list(np.array(listA)[listB])
print("Result :", res)
Output
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้ -
Given list A: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] Given list B: [0, 1, 3] Result : ['Mon', 'Tue', 'Thu']