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 回答