0

1 または 0 のみを格納する整数の配列があります。Python にそれを行う直接関数はありますか? 配列が [0,1,0,1] であると仮定すると、5 が返されます。

4

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 に答える