■
…昨日書いたreduceYieldにバグがあると思うんだが、どういう挙動にしたものやらわからない。
…んー。
for ii in reduceYield( range(5), lambda x,y: x+y): print ii
としたときに
1
3
6
10
と返ってくるんだけど、一周目の0が返ってきてほしいんだよね。
0
1
3
6
10
となって欲しい。
追記
解決した模様。
def reduceYield(list,fn,start=None): for ii in list: if start==None: start = ii yield ii else: start = fn(start,ii) yield start
なんで最初の一周目のが欲しかったかって言うと、
initializer が与えられて おらず、sequence が単一の要素しか持っていない場合、 最初の要素が返されます。
とか書いてあったからなのさ。