我有一个关于将yield语句转换为生成器表达式的问题
所以我有一个小的yield方法,它得到一个函数和一个起始数作为它的输入,并且基本上调用了每个被调用的前一个数字的函数,即:
等。 这是Python中的代码:
def some_func(function, number):
while True:
yield number
number = function(number)
将此代码段转换为生成器表达式的方法有哪些? 我猜这种做法有一种非常pythonic和优雅的方式,但我无法理解它。
我对Generator Expressions非常不熟悉,因此我寻求帮助但我确实希望扩展我对Gen Exp的了解,特别是Python的知识
答案 0 :(得分:5)
坚持你现在拥有的东西。你可以将函数转换为生成器表达式,但它是一个难以理解的混乱。
生成器表达式需要另一个迭代循环,你的生成器函数没有。 Generator表达式也不能真正访问任何其他变量;只有表达式和循环,带有可选的if
过滤器和更多循环。
这是生成器表达式的样子:
from itertools import repeat
number = [number]
gen = ((number[0], number.__setitem__(0, function(number[0]))[0] for _ in repeat(True))
我们将number
滥用为“变量”。