生成生成聚合結果的生成器的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'。 –