此问题已在此处有答案:
Best way to store boolean values to save memory in python(3个答案)
7年前关闭。
截至7小时前,社区正在审查是否重新讨论这个问题。
显然,整数在Python中需要24个字节。我可以理解,它之所以这样做,是因为表示无限数的额外的铃铛和哨子。然而,看起来布尔数据类型也花费了24个字节,即使它可能只表示两个值。为什么?为什么?
编辑:我不是在问最好的方式来存储布尔值。我已经知道NumPy,BitArray等从其他答案。我的问题是“为什么”,而不是“如何”。只是为了清楚和集中,我已经删除了问题的第二部分。
1条答案
按热度按时间z9smfwbn1#
一个
bool
对于它所代表的东西来说可能是相当巨大的,但只有两个。充满True
的列表只包含对一个规范True
对象的4或8字节引用。如果8个字节仍然太大,并且您确实希望使用Python进行任何操作,则可以考虑使用内置
array
模块或NumPy提供的数组类型。这些提供了每bool一个字节的表示。如果这仍然太多,您可以使用位集,无论是手动使用Python的内置bignums还是使用PyPI的BitVector
。**这些选项可能会降低程序的速度。**其中一些选项可以提高速度,但前提是您必须利用这些功能,将工作从解释代码推到C中。