如何将二进制列表转换为十进制列表?



LIST OF LIST BIN DIVIDED INTO 8: [[0,1,1,1,0,0,1,1,1], [0,1,1,1,1]]

我想要的输出是: (101、119)

这比任何类型的字符串操作更复杂,但明显更快,因为它本质上只是整数运算。

from timeit import timeit
lob = [[0, 1, 1, 0, 0, 1, 0, 1], [0, 1, 1, 1, 0, 1, 1, 1]]
def v1():
result = []
for e in lob:
r = 0
for _e in e:
r = r * 2 + _e
result.append(r)
return result
def v2():
return [int(''.join([str(y) for y in x]), 2) for x in lob]
assert v1() == v2()
for func in v1, v2:
print(func.__name__, timeit(func))

输出:

v1 0.6906622060014342
v2 2.173182999999881

最新更新