【问题标题】:suggestions for practicing Generators(python)练习生成器的建议(python)
【发布时间】:2018-01-27 21:53:38
【问题描述】:

我了解生成器背后的概念,以及为什么人们会选择它而不是列表..,但我很难通过在我的编码中实际实现它们来获得质量实践..关于我应该玩的问题类型的任何建议周围有?我已经编写了“斐波那契”代码,但想练习使用其他类型的代码,以便更好地使用生成器。--谢谢--

【问题讨论】:

  • 我觉得“练习生成器”有点奇怪。通常,您通过在现实生活中使用这些技术来掌握编码技术。此外,生成器并不总是最好的设计决策。我不会寻找有关生成器的练习,而是实施代码挑战等,并在适用的情况下使用生成器。
  • 啊。明白了,谢谢

标签: python generator


【解决方案1】:

这个怎么样:实现一个从大文件或大数据库中读取块的生成器(大到无法放入内存)。或者,将无限多个值的流视为输入。

您可能已经了解到,这是现实世界应用程序中的常见用例:

https://docs.python.org/3/howto/functional.html

通过列表推导,您可以得到一个 Python 列表; [...] 生成器表达式返回一个迭代器,它根据需要计算值,而不需要一次实现所有值。这意味着如果您正在使用返回无限流或大量数据的迭代器,列表推导式就没有用了。在这些情况下,生成器表达式更可取。

http://naiquevin.github.io/python-generators-and-being-lazy.html

现在您可能会问,这与普通列表有何不同,这一切又有什么用?主要区别在于生成器会即时给出新值,并且不会将元素保存在内存中。

https://wiki.python.org/moin/Generators

使用生成器带来的性能改进是惰性(按需)生成值的结果,这意味着更低的内存使用量。此外,我们不需要等到所有元素都生成后才开始使用它们。这类似于迭代器提供的好处,但生成器使构建迭代器变得容易。

【讨论】:

  • 感谢您的建议和信息,非常感谢。
猜你喜欢
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多