1 または 0 のみを格納する整数の配列があります。Python にそれを行う直接関数はありますか? 配列が [0,1,0,1] であると仮定すると、5 が返されます。
5 に答える
3
単一の関数を考えることはできませんが、以下は非常に簡単です。
In [60]: val = 0
In [61]: for digit in [0,1,0,1]:
....: val = val * 2 + digit
....:
In [62]: val
Out[62]: 5
編集:少し遅い場合は、次のワンライナーが同じ仕事をします:
In [66]: reduce(lambda x,y: 2*x+y, [0,1,0,1,1])
Out[66]: 11
于 2012-12-01T11:49:12.800 に答える
3
効果的にビット文字列を持っている場合は、次のことができます。
>>> a
[0, 1, 0, 1]
>>> int(''.join(str(i) for i in a), 2)
5
>>>
于 2012-12-01T11:49:17.403 に答える
2
sum(j<<i for i, j in enumerate(reversed([0, 1, 0, 1])))
于 2012-12-01T12:10:30.137 に答える
1
これはあなたが望むことをするはずです:
a_list = [0,1,0,1]
int(''.join(map(str,a_list)), base=2)
于 2012-12-01T11:54:12.073 に答える
0
Python でビット操作を行う必要がある場合は、次の wiki ページを確認してください。
http://wiki.python.org/moin/BitManipulation
それを行うための組み込みはありませんが、そこに記載されているライブラリ (特に python-bitstring) が役立つはずです。
于 2012-12-01T13:48:29.993 に答える