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
坚持你现在拥有的.你可以将函数转换为生成器表达式,但它是一个不可读的混乱.
生成器表达式需要另一个迭代循环,你的生成器函数没有.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作为"变量"的地方.