生成生成聚合结果的生成器的Pythonic方法是什么?在元的代码,这样的事情(而不是真实的,因为我的Python版本不支持混合的产量和返回):生成生成器和聚合结果的Python函数
def produce():
total = 0
for item in find_all():
total += 1
yield item
return total
在我看来,我可以:
- 不作
produce()
一个发电机,但传递一个回调函数来调用每个item
。 - 对于每个
yield
,还有yield
到目前为止的总计结果。我宁愿不计算每个产量的中间结果,只有在完成时。 - 发送一个
dict
作为produce()
的参数,该参数将填充聚合结果。 - 使用全局来存储聚合结果。
所有这些似乎没有太大的吸引力...
NB。 total
是一个简单的例子,我的实际代码需要复杂的聚合。我需要produce()
完成之前的中间结果,因此是一个发电机。
所以总同样是迭代的长度的仅仅是等效由'find_all'返回?为此你可以使用'enumerate'。 –