【发布时间】:2013-12-16 11:55:23
【问题描述】:
我有一个关于将 yield 语句转换为生成器表达式的问题
所以我有这个小的 yield 方法,它获取一个函数和一个起始数字作为其输入,并且基本上为每个先前调用的数字调用该函数,即:
- 第一次调用返回初始号码
- 第二次调用返回函数(初始编号)
- 第三次调用返回函数(第二个数字)
- 第四次调用返回函数(第三个数字)
等等。 这是Python中的代码:
def some_func(function, number):
while True:
yield number
number = function(number)
有什么方法可以将这个 sn-p 转换为生成器表达式? 我猜有一种非常pythonic和优雅的方式来做到这一点,但我就是无法理解它。
我对生成器表达式很不熟悉,因此我为什么要寻求帮助,但我确实想扩展我对 Gen Exp 的一般知识,特别是 Python 的知识
【问题讨论】:
-
生成器表达式实际上并没有像那个局部变量那样的“记忆”,它们也不能递归地调用自己。也许我会对答案感到惊讶,但在我看来,您的函数已经是优雅和 Pythonic 的方式。
-
生成器表达式需要 a) 另一个迭代器来循环,并且 b) 不能访问其他变量。我会按原样坚持这个功能。
-
您可以查看this question 的答案,并将
(x for x in whatever)包裹起来。最近有很多人就同一个问题提出了不同的问题,尽管他们倾向于说“不使用 yield”而不是“使用 genexp”。
标签: python python-3.x generator yield generator-expression