ได้ลิสต์สองลิสต์ ต้องการหาดัชนีในลิสต์แรกของค่าที่ปรากฏในลิสต์ที่สอง
วิธี 1: ใช้ list.index() ใน List Comprehension
listA = ['Mon','Tue','Wed','Thu','Fri']
listB = ['Tue','Fri']
res = [listA.index(i) for i in listB]
print(res) # [1, 4]
วิธี 2: ใช้ enumerate และ set (เร็วกว่าสำหรับลิสต์ใหญ่)
listA = ['Mon','Tue','Wed','Thu','Fri']
listB = ['Tue','Fri']
setB = set(listB)
res = [i for i, val in enumerate(listA) if val in setB]
print(res) # [1, 4]
สรุป
- วิธี 1 เรียบง่าย แต่อาจช้า (O(n×m))
- วิธี 2 ใช้เซตค้นหา O(1) รวม O(n+m) เหมาะสำหรับข้อมูลมาก