问题描述
有一个用于在迭代器上指定长度提示(object.__length_hint__
)的协议。但是,我测试过的stdlib中的所有功能都不会传播此信息。例如
>>> import operator
>>> operator.length_hint(range(10))
10
>>> operator.length_hint(enumerate(range(10)))
0
enumerate
的长度提示可以只在包含的迭代器上返回长度提示。这种缺乏支持使长度提示的用处大大减少,因为一旦迭代器接触到组合器,长度提示上的所有信息都会丢失。 map
,zip
和itertools
中的许多功能也是如此
我看不到任何正确性问题,因为长度提示无论如何都只是一个提示,我也看不到任何性能问题,因为这仅需要一个附加的实例方法。
那么stdlib为什么不抓住这个机会?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)