reduce
Pythonの便利な関数をご存知でしょう。たとえば、次のようにリストを合計するために使用できます (組み込みのsumがないふりをします)。
reduce(lambda x,y: x+y, [1,2,3,4], 0)
(((0+1)+2)+3)+4 = 10 を返します。
中間合計のリストが必要な場合はどうすればよいでしょうか。この場合、[1,3,6,10]
.
ここに醜い解決策があります。もっとpythonicなものはありますか?
def reducelist(f, l, x):
out = [x]
prev = x
for i in l:
prev = f(prev, i)
out.append(prev)
return out