为什么布尔值在Python中占用的字节比一个多?[副本]

cgh8pdjw  于 2023-10-14  发布在  Python
关注(0)|答案(1)|浏览(87)

此问题已在此处有答案

Best way to store boolean values to save memory in python(3个答案)
7年前关闭。
截至7小时前,社区正在审查是否重新讨论这个问题。
显然,整数在Python中需要24个字节。我可以理解,它之所以这样做,是因为表示无限数的额外的铃铛和哨子。然而,看起来布尔数据类型也花费了24个字节,即使它可能只表示两个值。为什么?为什么?
编辑:我不是在问最好的方式来存储布尔值。我已经知道NumPy,BitArray等从其他答案。我的问题是“为什么”,而不是“如何”。只是为了清楚和集中,我已经删除了问题的第二部分。

z9smfwbn

z9smfwbn1#

一个bool对于它所代表的东西来说可能是相当巨大的,但只有两个。充满True的列表只包含对一个规范True对象的4或8字节引用。
如果8个字节仍然太大,并且您确实希望使用Python进行任何操作,则可以考虑使用内置array模块或NumPy提供的数组类型。这些提供了每bool一个字节的表示。如果这仍然太多,您可以使用位集,无论是手动使用Python的内置bignums还是使用PyPI的BitVector。**这些选项可能会降低程序的速度。**其中一些选项可以提高速度,但前提是您必须利用这些功能,将工作从解释代码推到C中。

相关问题