gpt4 book ai didi

python - python 中的长索引数组

转载 作者:行者123 更新时间:2023-11-28 19:36:22 25 4
gpt4 key购买 nike

我试图通过将 10B 连续整数引用为 bool 数组中的索引来缩短它们的内存占用。换句话说,我需要创建一个包含 10,000,000,000 个元素的数组,但这已经超出了“长”范围。当我尝试引用大于 sys.maxint 的数组索引时,数组会爆炸:

x = [False] * 10000000000Traceback (most recent call last):  File "", line 1, in     x = [0] * 10000000000OverflowError: cannot fit 'long' into an index-sized integer

有什么我可以做的吗?我似乎无法在网上找到任何人遇到这个问题......大概答案是“python 无法处理大于 2B 的数组”。

最佳答案

对于 32 位地址空间,任何语言都将难以寻址这样的数组。然后是您的计算机上有多少实际内存的问题。

如果您想要 10B 个数组元素,每个元素代表 true 或 false,请使用 array.array('I', ...) ...

container = array.array('I', [0]) * ((10000000000 + 31) // 32)

然后您可以使用通常的屏蔽和移位操作来设置和清除位。

替代方案:

如果只有少量元素为真,或者只有少量元素为假,您可以使用 set 来节省内存,或者使用 dict 来方便编程。

关于python - python 中的长索引数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1436411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com