如何解决python中巨型列表类对象的长度
我正在创建一个类似列表的对象,其中包含大量元素,但是当我运行以下代码时,出现错误。
class test:
def __init__(self,n):
self.n = n
def __len__(self):
return self.n
instance = test(10**20)
print(len(instance))
我返回的错误是: 溢出错误:无法将“int”放入索引大小的整数中
有人知道出了什么问题吗?
解决方法
这是一个 CPython 实现细节。来自__len__
docs:
在 CPython 中,长度最多为 sys.maxsize
。如果
长度大于 sys.maxsize
某些特征(例如 len()
)
可能会引发 OverflowError
。防止通过真相引发 OverflowError
值测试,一个对象必须定义一个 __bool__()
方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。