我有一个关于将yield语句转换为生成器表达式的问题
所以我有一个小的yield方法,它获取一个函数和一个起始数字作为其输入,并且基本上为每个先前被调用的数字调用该函数,即:
- 第一次调用返回初始号码
- 第二次调用返回函数(初始编号)
- 第三次调用返回函数(第二个数字)
- 第四次调用返回函数(第三个数字)
ETC。
这是 Python 中的代码:
def some_func(function, number):
while True:
yield number
number = function(number)
有哪些方法可以将此代码片段转换为生成器表达式?
我猜想有一种非常Pythonic和优雅的方法可以做到这一点,但我就是无法理解它。
我对生成器表达式非常不熟悉,因此我寻求帮助,但我确实想扩展我对 Gen Exp 的一般知识,特别是 Python 的知识
坚持你现在拥有的。您可以将函数转换为生成器表达式,但这会是一个难以阅读的混乱。
生成器表达式需要另一个可迭代对象来循环,而您的生成器函数没有。生成器表达式实际上也无法访问任何其他变量;只有表达式和循环,可选if
过滤器和更多循环。
生成器表达式如下所示:
from itertools import repeat
number = [number]
gen = ((number[0], number.__setitem__(0, function(number[0]))[0] for _ in repeat(True))
我们在哪里滥用number
作为“变量”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)