![](/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.