我理解发电机背后的概念以及为什么人们会在列表上选择它...但是我在通过实际在我的编码中实现它们而在获得质量实践方面苦苦挣扎。关于问题类型的任何建议我应该玩弄?我做了斐波那契'斐波那契'代码已经但想与其他类型一起练习,以便充分利用生成器.--谢谢 -
答案 0 :(得分:0)
这个怎么样:实现一个从大文件或大数据库中读取块的生成器(这么大,以至于它不适合内存)。或者,将无限多个值的流视为输入。
您可能已经了解到,这是实际应用程序中的常见用例:
https://docs.python.org/3/howto/functional.html
通过列表理解,您可以获得Python列表; [...] Generator表达式返回一个迭代器,它根据需要计算值,而不需要一次实现所有值。这意味着如果您正在使用返回无限流或大量数据的迭代器,则列表推导无用。在这些情况下,生成器表达式更可取。
http://naiquevin.github.io/python-generators-and-being-lazy.html
现在您可能会问这与普通列表有何不同之处以及所有这些的用途是什么?关键的区别在于,生成器会动态发出新值,并且不会将元素保留在内存中。
https://wiki.python.org/moin/Generators
使用生成器的性能提升是懒惰(按需)生成值的结果,这意味着更低的内存使用率。此外,在开始使用它们之前,我们不需要等到所有元素都已生成。这类似于迭代器提供的好处,但生成器使构建迭代器变得容易。