显然整数在 Python 中需要 24 个字节。我可以理解这样做是因为表示无限数字的额外花里胡哨。然而,看起来布尔数据类型也花费了 24 个字节,即使它可能只代表两个值。为什么?
编辑:我不是要求最好的方式来存储布尔值。我已经从其他答案中了解到 NumPy、BitArray 等。我的问题是为什么,而不是如何。只是为了清楚和专注,我已经删除了问题的第二部分。
Abool对于它所代表的内容来说可能非常大,但只有两个。一个充满Trues的列表仅包含对一个规范True对象的4 或 8 字节引用。
如果 8 个字节仍然太大,并且您确实想将 Python 用于您正在做的任何事情,您可以考虑使用内置array模块或 NumPy提供的数组类型。这些提供 1 字节/bool 表示。如果这仍然太多,您可以使用位集,或者使用 Python 的内置 bignum 手动或使用BitVectorPyPI 之类的东西。这些选项可能会减慢您的程序速度。其中一些可以提高速度,但前提是您利用了让您将工作从解释代码中推送到 C 中的功能。
| 归档时间: |
|
| 查看次数: |
12244 次 |
| 最近记录: |