比如給定一個數 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 關注
- 681 瀏覽
添加回答
舉報
0/150
提交
取消