有谁能帮我解释一下为什么我不能打印
>>> list(range(4**4**4)).我收到一个错误OverflowError: range()结果有太多项
发布于 2019-11-16 15:35:00
根据官方文件:
https://docs.python.org/2/library/sys.html#sys.maxsize https://docs.python.org/3/library/sys.html#sys.maxsize
sys.maxsize是平台的Py_ssize_t类型所支持的最大正整数,因此最大大小列表、字符串、dicts和许多其他容器可以具有。
尝试使用此代码检查是否能够创建您大小的列表:
>>> import sys
>>> sys.maxsize > 4**4**4并尝试这样来验证python是如何在您的情况下解析权限的:
>>> print(2**2**3)
256
>>> print(2**(2**3))
256
>>> print((2**2)**3)
64发布于 2019-11-16 15:35:37
中的元素,您将得到一个OverflowError
- On 32bit Python: 2\*\*31 - 1
- On 64 bit Python: 2\*\*63 - 1
- You can get a MemoryError even for values just under that.例如,您的数字非常大:
- 2\*\*64 = 18446744073709551616
- 4\*\*4\*\*4 = 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096
https://stackoverflow.com/questions/58892204
复制相似问题