Python函数在二进制数组中查找1的索引

我有一个看起来像这样的数组

[1, 0, 1 , 0 , 0, 1]

我希望得到那些含有1的索引.
所以在这里我会得到一个[0,2,5]的数组
然后基于它我将创建一个新数组,它接受这些数字并用它们指数化2
所以结束数组是

[2**0, 2**2, 2**5]

有没有办法尽快写出来?

最佳答案 你可以在列表理解中使用枚举:

a = [1, 0, 1 , 0 , 0, 1]
b = [2**idx for idx, v in enumerate(a) if v]
b

输出:

[1, 4, 32]
点赞