PEP
424中有一些指示:一种公开长度提示的方法:
CPython当前在几种类型上定义了 length_hint 方法,例如各种迭代器。然后,各种其他功能(例如list)将使用此方法来根据
length_hint 返回的估计值对列表进行 大小调整 。然后,没有大小且因此不应定义 len的类型 可以定义
length_hint ,以允许估计或计算大小(例如许多迭代器)。和:
能够根据由 length_hint
估计的预期大小来预分配列表可能是一项重大的优化。观察到CPython比PyPy运行某些代码快,完全是因为存在这种优化。
因此,似乎要进行
list调用
__len__才能预先分配列表。之后,您的列表可以根据需要增加。


![为什么在使用__getitem__进行迭代时调用__len__而不使用结果?[重复] 为什么在使用__getitem__进行迭代时调用__len__而不使用结果?[重复]](http://www.mshxw.com/aiimages/31/623808.png)
