无法在Python 3中打印列表(range(4 ** 4 ** 4))

问题描述 投票:0回答:2

[有人可以帮忙解释一下为什么我无法打印

>>> list(range(4**4**4)).

我收到错误OverflowError:range()结果包含太多项

python list range overflow
2个回答
0
投票

根据官方文档:

https://docs.python.org/2/library/sys.html#sys.maxsizehttps://docs.python.org/3/library/sys.html#sys.maxsize

sys.maxsize平台支持的最大正整数Py_ssize_t类型,以及最大大小列表,字符串,字典和许多其他容器可以具有。

尝试使用此代码检查您是否可以创建自己的尺寸列表:

>>> import sys
>>> sys.maxsize > 4**4**4

并尝试此操作以验证python如何解决您的情况下的能力:

>>> print(2**2**3)
256
>>> print(2**(2**3))
256
>>> print((2**2)**3)
64

0
投票
  • 如果列表中的元素数量超出了有符号长整数所能容纳的元素,您将收到OverflowError:

    • 在32位Python上:2 ** 31-1
    • 在64位Python上:2 ** 63-1
    • 即使对于该值以下的值,您也可以获取MemoryError。

    例如,您的电话号码很大:

    • 2 ** 64 = 18446744073709551616
    • 4 ** 4 ** 4 = 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096
© www.soinside.com 2019 - 2024. All rights reserved.