gpt4 book ai didi

python - PEP 424 __length_hint__() - 有没有办法对生成器或 zipper 做同样的事情?

转载 作者:行者123 更新时间:2023-12-04 22:57:42 25 4
gpt4 key购买 nike

刚刚遇到这个很棒的__length_hint__()来自 PEP 424 ( https://www.python.org/dev/peps/pep-0424/ ) 的迭代器方法。哇!一种在不耗尽迭代器的情况下获取迭代器长度的方法。

我的问题:

  • 有没有一个简单的解释这个魔法是如何工作的?我只是好奇。
  • 是否存在限制和不起作用的情况? (“提示”听起来有点可疑)。
  • 有没有办法获得 zipper 和生成器的提示?或者它只是迭代器的基础?

  • 编辑:顺便说一句,我看到 __length__hint__()从当前位置计数到最后。即部分消耗的迭代器将报告剩余长度。有趣的。

    最佳答案

    Wow! A way to get the iterator length without exhausting the iterator.



    这是获得 的一种方式模糊提示关于长度可能是多少。没有要求它在任何方面都是准确的。

    Is there a simple explanation how does this magic work?



    迭代器实现了 __length_hint__使用某种特定于迭代器的信息来猜测它将输出多少元素的方法。这个猜测可能相当不错,也可能非常糟糕。例如,列表迭代器知道它在列表中的位置以及列表的长度,因此它可以报告列表中还剩下多少元素。

    Are there limitations and cases where it wouldn't work?



    如果迭代器没有足够的信息来猜测它什么时候会用完,它就无法实现有用的 __length_hint__ .例如,这就是为什么生成器没有生成器的原因。无限迭代器也无法实现有用的 __length_hint__ ,因为没有办法表示无限长度。

    Is there a way to get the hint for zips and generators as well? Or is it something fundamental only to iterators?


    zip实例和生成器都是迭代器。都没有 zip发电机类型也没有提供 __length_hint__方法,不过。

    关于python - PEP 424 __length_hint__() - 有没有办法对生成器或 zipper 做同样的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38385360/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com