Python
中的len
内置函数限制为系统的整数长度。因此,就我而言,它仅限于 sys.maxsize
,即 2147483647。然而,鉴于 Python3
的无限整数,我认为这种限制令人沮丧。是否有任何解决方法来克服此限制?例如,我想得到这个的长度:
range(3, 100000000000000000000, 3)
但是这个:
len(range(3, 100000000000000000000, 3))
返回此错误:
OverflowError: Python int too large to convert to C ssize_t
最佳答案
除非您计划拥有大量具有巨大容量的惰性可迭代类型,否则您可以特例 range
并自己进行数学计算:
def robustish_len(c):
try:
return len(c)
except OverflowError:
return (c.stop - c.start + c.step - 1) // c.step
或者,或者:
def robust_len(c):
try:
return len(c)
except OverflowError:
return float('inf') # close enough :)
关于python - 如何解决 Python 中 `len` 函数的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57779889/