python - 带参数的生成器?
问题描述
有没有办法创建一个参数化的生成器。
我想要一个生成器/计数器,如果我通过 True,它会增加,如果我通过 False,它会减少。
next(gen(True))
1
next(gen(True))
2
next(gen(False))
1
如果它回落到零以下,我想结束迭代。
我正在使用这个生成器来实现回溯,即当所有选项都用尽时,就会出现低于零的情况。
达到上限是动态的。如果我无法整合它,我可以在外面进行检查。
拥有生成器允许我将循环逻辑作为简单的 while 循环来执行。
如前所述,我也可能会探索 Callable 对象。
解决方案
如果gen
是 type 的值generator
,则可以使用它的send
方法。next(gen)
本质上与gen.send(None)
(其中一个必须用于启动新生成器)相同。
def make_gen():
counter = 0
while True:
if (yield counter):
counter += 1
else:
counter -= 1
然后
>>> gen = make_gen()
>>> next(gen)
0
>>> gen.send(True)
1
>>> gen.send(True)
2
>>> gen.send(False)
1
推荐阅读
- javascript - 存根未执行回调(Javascript)
- javascript - 如何从 FormData 获取图像到 Rails API 并保存在 ActiveStorage
- r - 在闪亮的情况下,我正在使用多个选择输入来更新数据集,但反应性无法正常工作?
- sql-server - 如何在 SSIS 中使用可变数量的空格构建动态连接字符串
- python - 如何从 SQLAlchemy 中的 id 池中获取每组前 n 个结果?
- oracle - 在oracle数据库中插入特殊字符
- excel-formula - 如何找到大于列中前一个值的列中的第一个值
- php - 管理 PHP 数组中字符串使用的内存的最佳方法是什么?
- excel - 注销时Powershell脚本不会作为系统运行,但在用户登录时工作正常
- jquery - 是否可以通过 Promise 防止过多的异步调用?