python - 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。为什么会这样?我似乎无法发现代码中的错误。
解决方案
在您的代码中,只需删除此行,因为您将立即重新分配函数输入参数
binary = []
作为更简洁的替代方案
def binatodeci(binary):
return sum(val*(2**idx) for idx, val in enumerate(reversed(binary)))
例子
>>> binatodeci([1,1,0,1])
13
推荐阅读
- java - 尝试从 XML 创建 POJO 时获取不受支持的媒体类型
- java - 这两个代码是等价的吗?
- html - 创建具有背景颜色的列表项,包括悬停时的列表项编号
- recursion - 在 Lisp 中返回两个集合的并集(按字母顺序)的函数
- cmake - 为 nucleo stm32f767 编译 freertos 时出错
- webpack - Webpack 文件加载器:加载资源失败
- angular - 在业力旁边使用玩笑的冲突类型,Angular 上的茉莉花
- java - 最近的 Java 升级导致椭圆曲线服务器证书的 TLS 握手失败?
- java - JDBC SQLServerConnection“用户 'sa' 登录失败”
- javascript - 如何在单击按钮之前禁用输入