Python 参数化发电机?
我需要参数化发电机。将在调用.nextarg时接受参数的。 在这种特定情况下,我希望生成器在arg为True时更改为+1,在False时更改为-1 这在python中是否可行?在生成器实例上使用该方法可以将状态注入生成器。这使得类似的事情成为可能:Python 参数化发电机?,python,parameters,generator,Python,Parameters,Generator,我需要参数化发电机。将在调用.nextarg时接受参数的。 在这种特定情况下,我希望生成器在arg为True时更改为+1,在False时更改为-1 这在python中是否可行?在生成器实例上使用该方法可以将状态注入生成器。这使得类似的事情成为可能: >>> def mygen(): ... i = 0 ... sign = 1 ... while True: ... val = yield sign*i ... if va
>>> def mygen():
... i = 0
... sign = 1
... while True:
... val = yield sign*i
... if val is not None:
... sign = 1 if val else -1
... i += 1
...
>>> g = mygen()
>>> next(g)
0
>>> next(g)
1
>>> next(g)
2
>>> g.send(False)
-3
>>> next(g)
-4
>>> next(g)
-5
>>> g.send(True)
6
>>> next(g)
7
注意,nextg相当于g.sendNone 这是我的最终版本:
def flip_flop(low=0, high=10):
i = 0
while i >= low and i <= high :
cond = yield i
if cond : i += 1
else : i -= 1
In [64]: ff = flip_flop()
In [65]: ff.next()
Out[65]: 0
In [66]: ff.send(True)
Out[66]: 1
In [67]: ff.send(True)
Out[67]: 2
In [68]: ff.send(True)
Out[68]: 3
In [69]: ff.send(False)
Out[69]: 2
可以在“for”循环中发送工作,或者它只在“while”中有效@user1019129为什么会有不同?无论如何,您可以很容易地检查它……您如何在for循环中发送参数?for循环的全部要点是结束与迭代器的交互,这样您就看不到它了;您将在语法中的什么位置插入args?