ได้ Binary List (มีค่า True/False หรือ 1/0) ต้องการดัชนีของทุกตำแหน่งที่เป็น True
วิธี 1: ใช้ enumerate กับ List Comprehension
listA = [True, False, 1, False, 0, True]
res = [i for i, val in enumerate(listA) if val]
print(res) # [0, 2, 5]
วิธี 2: ใช้ itertools.compress
from itertools import compress
listA = [True, False, 1, False, 0, True]
res = list(compress(range(len(listA)), listA))
print(res) # [0, 2, 5]
สรุป
compress(selector, data) เลือกข้อมูลจาก data เมื่อ selector เป็น True ใช้ range(len(listA)) เป็น data เพื่อได้ดัชนี