我有一个整数数组,它只存储 1 或 0。python 中是否有直接函数可以做到这一点?假设数组是 [0,1,0,1] 那么它应该返回 5。
问问题
435 次
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 回答