【发布时间】:2011-11-10 13:54:40
【问题描述】:
我有一个非常大的 0 和 1 列表,默认情况下,由 python 表示为整数,我认为:[randint(0, 1) for i in range(50*98)]
我想优化代码,使其占用更少的内存。显而易见的方法是仅使用 1 位来表示这些数字中的每一个。
是否可以在 python 中构建一个实数二进制数列表?
问候, 布鲁诺
编辑:谢谢大家。
从答案中我发现Python默认不这样做,所以我发现这个库(由Macports在OSX上安装,所以它为我省去了一些麻烦)执行位操作:
python-bitstring
【问题讨论】:
-
“实二进制数”和“正常数”有什么区别?
-
您的意思是位集/位串吗? stackoverflow.com/questions/3946086/…
-
一个真正的二进制数只使用 1 位内存。据我所知,一个普通的数字,也就是一个整数,在 Python 中至少使用了 16 位。
-
无论使用何种语言,您都无法处理任何内存。如果你想要一个 N 位数,N 必须是 8 的倍数,即使你忽略它们。
-
内存真的是个问题,还是您只是认为有问题? 50*98 位是相当小的内存量。