为什么stdlib中迭代器上的组合器不传播长度提示?

问题描述

一个用于在迭代器上指定长度提示object.__length_hint__)的协议。但是,我测试过的stdlib中的所有功能都不会传播此信息。例如

>>> import operator
>>> operator.length_hint(range(10))
10
>>> operator.length_hint(enumerate(range(10)))
0

enumerate的长度提示可以只在包含的迭代器上返回长度提示。这种缺乏支持使长度提示的用处大大减少,因为一旦迭代器接触到组合器,长度提示上的所有信息都会丢失。 mapzipitertools中的许多功能也是如此

我看不到任何正确性问题,因为长度提示无论如何都只是一个提示,我也看不到任何性能问题,因为这仅需要一个附加的实例方法

那么stdlib为什么不抓住这个机会?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)