比如给定一个数 210 (二进制表示为 11010010),其中第2、5、7、8位是1(从最右开始数),那么结果就是 [2,5,7,8]。有什么高效的解决办法呢?
1 回答
UYOU
TA贡献1878条经验 获得超4个赞
直接上答案吧,我是用列表推导来做的,
[i + 1 for i, x in enumerate(list(bin(a)[::-1])) if x =='1']
后来为了更高的效率,我直接这样做了。
a = (i + 1 for i, x in enumerate(list(bin(a)[::-1])) if x =='1')# 需要打印出来就用这个迭代呗。for x in a: print(x)
- 1 回答
- 0 关注
- 645 浏览
添加回答
举报
0/150
提交
取消