将列表的元素转换为二进制

问题描述 投票:4回答:4

假设我有一个列表:

lst = [0, 1, 0, 0]

我怎么能让python将这个列表解释为二进制数0100​​,以便2*(0100)给我01000

我能想到的唯一方法是首先创建一个函数,将“二进制”元素转换为相应的整数(到10),然后使用bin()函数。

有没有更好的办法?

python python-3.x binary
4个回答
3
投票

你可以像这样使用bitwise operators

>>> lst = [0, 1, 0, 0]
 >>> bin(int(''.join(map(str, lst)), 2) << 1)
'0b1000'

0
投票

这不是一个花哨的单行,但简单而快速。

lst = [0,1,1,0]

num = 0
for b in lst:
    num = 2 * num + b
print(num) # 6

0
投票

您可以使用此代码连接列表元素:

x=[0, 1, 0, 0]
b=''.join(map(str,x))
print(b)

输出:

C:\python\prog>python trying.py

0100

-1
投票

你可以试试:

l = [0, 0, 1, 0]
num = int(''.join(str(x) for x in l), base=2)
© www.soinside.com 2019 - 2024. All rights reserved.