在Python中将yield语句转换为Generator表达式

use*_*680 2 python yield generator generator-expression python-3.x

我有一个关于将yield语句转换为生成器表达式的问题

所以我有这个小的yield方法,它获取一个函数和一个起始数作为它的输入,并且基本上为每个被调用的数字调用函数,即:

  • 第一个调用返回初始数字
  • 第二个调用返回函数(初始编号)
  • 第三个调用返回函数(第二个数字)
  • 第四个调用返回函数(第三个数字)

这是Python中的代码:

def some_func(function, number):
    while True:
        yield number
        number = function(number)
Run Code Online (Sandbox Code Playgroud)

将此代码段转换为生成器表达式的方法有哪些?我猜这种做法有一种非常pythonic和优雅的方式,但我无法理解它.

我对Generator Expressions非常不熟悉,因此为什么我要求帮助,但我确实希望扩展我对Gen Exp的了解,尤其是Python

Mar*_*ers 5

坚持你现在拥有的.你可以将函数转换为生成器表达式,但它是一个不可读的混乱.

生成器表达式需要另一个迭代循环,你的生成器函数没有.Generator表达式也不能真正访问任何其他变量; 只有表达式和循环,带有可选的if过滤器和更多的循环.

这是生成器表达式的样子:

from itertools import repeat

number = [number]
gen = ((number[0], number.__setitem__(0, function(number[0]))[0] for _ in repeat(True))
Run Code Online (Sandbox Code Playgroud)

我们滥用number作为"变量"的地方.