您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么在使用__getitem__进行迭代时调用__len__而不使用结果?

为什么在使用__getitem__进行迭代时调用__len__而不使用结果?

PEP 424中有一些指示:一种公开长度提示的方法

cpython当前在几种类型上定义了 方法,例如各种迭代器。然后,各种其他功能(例如list)将使用此方法来根据 返回的估计值对列表进行 。然后,没有大小且因此不应定义 可以定义 ,以允许估计或计算大小(例如许多迭代器)。

和:

能够根据由 估计的预期大小来预分配列表可能是一项重大的优化。观察到cpython比PyPy运行某些代码快,完全是因为存在这种优化。

因此,似乎要进行list调用__len__才能预先分配列表。之后,您的列表可以根据需要增加

其他 2022/1/1 18:29:20 有432人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶