比如給定一個(gè)數(shù) 210 (二進(jìn)制表示為 11010010),其中第2、5、7、8位是1(從最右開始數(shù)),那么結(jié)果就是 [2,5,7,8]。有什么高效的解決辦法呢?
1 回答

慕田峪4524236
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
直接上答案吧,我是用列表推導(dǎo)來做的,
[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')# 需要打印出來就用這個(gè)迭代唄。for x in a: print(x)
- 1 回答
- 0 關(guān)注
- 854 瀏覽
添加回答
舉報(bào)
0/150
提交
取消