python - 链式迭代器就地
问题描述
有没有办法在迭代迭代器时扩展它。
我想迭代请求,如果它们超时,我想拆分请求并将它们添加到运行循环中。
像这样的东西:
l = [1, 2, 3, 4, 5]
it = iter(l)
for e in it:
try:
request(e)
except Exception:
it.append(split_request(e))
但append
不起作用并itertools.chain
返回一个新的迭代器,而不是就地更改迭代器。
解决方案
你需要一个while
循环。在其中,迭代列表并累积失败条目的列表。当该列表为空时,while
循环可以终止。就像是:
while l:
failures = []
for e in l:
try:
request(e)
except Exception:
failures.append(split_request(e))
l = failures
应该这样做。
推荐阅读
- pointers - 将 *[]foo 类型的变量转换为 *[]bar
- java - py4j - 在多处理中使用 java 成员对象
- javascript - 谷歌云函数错误 - 发布订阅到 BigQuery
- javascript - 承诺然后回调上下文“this.callFunc() 不是函数”
- laravel - Laravel 关系数据透视表多重关系
- angular - 当我使用带有角度 7 的传单路由机时,提名是未定义的
- r - 从列表中生成每个变量组合
- r - 我如何根据车牌号和时间离开加入 2 个不同的表?
- c# - 如何将字典添加到 SQL Server 表?
- php - 添加单选按钮后php mail()函数不起作用