![](/img/trans.png)
[英]How to work around OpenSSL's PRNG limitation in Python forked processes?
[英]How to work around the limitation of `len` function in Python?
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 中的一个错误。 至少对于课程,您可以替换
连(c)
和
c.__len__()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.