Python布尔字节大小

时间:2015-12-29 00:26:09

标签: python

显然整数在Python中花费24个字节。我可以理解它是这样做的,因为代表无限数字的额外花里胡哨。然而,看起来布尔数据类型也会花费24个字节,即使它可能只代表两个值。为什么呢?

编辑:我不是要求最好的存储bool的方法。我已经从其他答案中了解了NumPy,BitArray等。我的问题是为什么,而不是如何。为了清楚和专注于我已经删除了问题的第二部分。

1 个答案:

答案 0 :(得分:2)

bool对于它代表的东西来说可能非常巨大,但只有两个。完整列出True的列表仅包含对一个规范True对象的4或8字节引用。

如果8个字节仍然太大,并且你真的想要将Python用于你正在做的任何事情,你可以考虑使用类似于内置array模块或NumPy提供的数组类型。这些提供1字节每布尔表示。如果这仍然太多,你可以使用一个bitset,可以手动使用Python的内置bignums,也可以使用来自PyPI的BitVector这些选项可能会降低您的程序速度。其中一些选项可以提供速度提升,但前提是您利用的功能可以让您将解释后的代码推送到C中。