有没有可能创建一个迭代器/生成器,它将根据上一次迭代的一些结果来决定下一个值?
即
y = None
for x in some_iterator(ll, y):
y = some_calculation_on(x)
我希望选择下一个x
的逻辑取决于计算结果,允许对不同的结果使用不同的逻辑,就像在搜索问题中一样。
我还想让如何选择下一个x
和在x
上的计算尽可能地分开。
发布于 2018-06-19 00:10:23
这是可能的,但令人困惑。如果您希望将x
值序列和x
上的计算分开,则应该显式地通过不使用迭代器的x
来实现这一点。
def next_value(x):
"""Custom iterator"""
# Bunch of code defining a new x
yield new_x
x = None
while True:
x = next_value(x)
x = some_calculation_on(x)
# Break when you're done
if finished and done:
break
如果您希望循环精确执行i
次,则使用for
循环:
for step in range(i):
x = next_value(x)
x = some_calculation_on(x)
# No break
发布于 2018-06-19 04:56:10
def conditional_iterator(y):
# stuff to create new values
yield x if (expression involving y) else another_x
for x in conditional_iterator(y):
y = some_computation(x)
https://stackoverflow.com/questions/50913292
复制相似问题