首页 > 解决方案 > Python - 将二进制(列表)转换为十进制

问题描述

我一直在尝试编写将二进制列表转换为十进制的代码,例如:

[1,1,0,1] 

到目前为止,我编写的代码如下:

def binatodeci(binary):
    binary = []
    decimal = 0 
    binary.reverse()
    for i in range(len(binary)):
        decimal = decimal + (2**i)*binary[i]
    return decimal

但是,每次我尝试使用此函数时,它都会返回 0。为什么会这样?我似乎无法发现代码中的错误。

标签: pythonmathbinary

解决方案


在您的代码中,只需删除此行,因为您将立即重新分配函数输入参数

binary = []

作为更简洁的替代方案

def binatodeci(binary):
    return sum(val*(2**idx) for idx, val in enumerate(reversed(binary)))

例子

>>> binatodeci([1,1,0,1])
13

推荐阅读