擅长:python、mysql、java
<blockquote>
<p>Wow! A way to get the iterator length without exhausting the iterator.</p>
</blockquote>
<p><strong>不。</strong>这是一种获得关于长度的模糊提示的方法。没有要求它在任何方面都是准确的。在</p>
<blockquote>
<p>Is there a simple explanation how does this magic work?</p>
</blockquote>
<p>迭代器实现了一个<code>__length_hint__</code>方法,该方法使用某种特定于迭代器的信息来猜测它将输出多少元素。这个猜测可能相当不错,也可能糟糕透顶。例如,列表迭代器知道它在列表中的位置以及列表的长度,因此它可以报告列表中还剩下多少元素。在</p>
<blockquote>
<p>Are there limitations and cases where it wouldn't work?</p>
</blockquote>
<p>如果迭代器没有足够的信息来猜测它何时会用完,它就不能实现有用的<code>__length_hint__</code>。例如,这就是为什么发电机没有。无限迭代器也不能实现有用的<code>__length_hint__</code>,因为没有办法发出无限长的信号。在</p>
<blockquote>
<p>Is there a way to get the hint for zips and generators as well? Or is it something fundamental only to iterators?</p>
</blockquote>
<p><code>zip</code>实例和生成器都是迭代器。但是,<code>zip</code>和生成器类型都没有提供<code>__length_hint__</code>方法。在</p>