假设我有一个列表:
lst = [0, 1, 0, 0]
我怎么能让python将这个列表解释为二进制数0100,以便2*(0100)
给我01000
?
我能想到的唯一方法是首先创建一个函数,将“二进制”元素转换为相应的整数(到10),然后使用bin()函数。
有没有更好的办法?
你可以像这样使用bitwise operators:
>>> lst = [0, 1, 0, 0]
>>> bin(int(''.join(map(str, lst)), 2) << 1)
'0b1000'
这不是一个花哨的单行,但简单而快速。
lst = [0,1,1,0]
num = 0
for b in lst:
num = 2 * num + b
print(num) # 6
您可以使用此代码连接列表元素:
x=[0, 1, 0, 0]
b=''.join(map(str,x))
print(b)
输出:
C:\python\prog>python trying.py
0100
你可以试试:
l = [0, 0, 1, 0]
num = int(''.join(str(x) for x in l), base=2)