为什么 Python 布尔值占用超过一个字节?

2024-05-08

显然,Python 中整数占用 24 个字节。我可以理解,它这样做是因为代表无限数字的额外花哨。然而,布尔数据类型看起来也花费了高达 24 个字节,尽管它只能表示两个可能值之一。为什么?除了 1 位表示之外,还可能需要存储哪些额外数据True or False?

注意:我并不是在寻求存储布尔值的最佳方法。我已经从其他答案中了解到 NumPy、BitArray 等。我的问题是why, not how.


A bool就其所代表的意义而言可能相当巨大,但它们只有两个。一份清单充满了Trues 仅包含对一个规范的 4 或 8 字节引用True object.

如果 8 个字节仍然太大,并且您确实想使用 Python 来完成您正在做的任何事情,那么您可以考虑使用内置的数组类型array模块或 NumPy。它们提供每个布尔值 1 个字节的表示形式。如果这仍然太多,您可以使用位集,无论是使用Python的内置bignums还是使用类似的东西BitVector https://pypi.python.org/pypi/BitVector/来自 PyPI。这些选项可能会减慢您的程序速度。其中一些可以提高速度,但前提是您利用了可以将工作从解释代码中推入 C 的功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Python 布尔值占用超过一个字节? 的相关文章

随机推荐