加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在Python中使用二进制表示构建二进制数列表

发布时间:2020-12-20 11:20:25 所属栏目:Python 来源:网络整理
导读:我有一个非常大的0和1的列表,表示为整数 – 默认情况下 – 由 python,我认为:[randint(0,1)for i in range(50 * 98)] 我想优化代码,以便它使用更少的内存.显而易见的方法是仅使用1位来表示这些数字. 是否有可能在python中构建一个真正的二进制数列表? 问候
我有一个非常大的0和1的列表,表示为整数 – 默认情况下 – 由 python,我认为:[randint(0,1)for i in range(50 * 98)]

我想优化代码,以便它使用更少的内存.显而易见的方法是仅使用1位来表示这些数字.

是否有可能在python中构建一个真正的二进制数列表?

问候,
布鲁诺

编辑:谢谢大家.
从我发现的答案中我发现默认情况下Python没有这样做,所以我发现这个库(由Macports在OSX上安装,因此它省去了一些麻烦),它做了位操作:
python-bitstring

解决方法

这使用 bitstring模块并从列表中构造BitArray对象:

from bitstring import BitArray
b = BitArray([randint(0,1) for i in range(50*98)])

在内部,现在以字节形式存储,因此将占用更少的内存.您可以使用常用符号进行切片,索引,检查和设置位等,并使用其他方法(如set,allany)来修改位.

要将数据作为二进制字符串返回,只需使用b.bin并获取字节打包数据,请使用b.tobytes(),它将填充零位到字节边界.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读