微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么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 举报,一经查实,本站将立刻删除。