事例:総和を求める

1から5までの数の和/積が得られます。

>>> s = range(1,6); s
[1, 2, 3, 4, 5]
>>> reduce(lambda acc,e: acc+e, s, 0)
15
>>> reduce(lambda acc,e: acc*e, s, 1)
120

lambda 関数の第1引数 acc には、初期値として 0 が設定されます。第2引数 e は、リスト s の各要素を先頭から順に参照できます。すると、次のようにして計算が進みます。

   acc   e   acc+e 
(1)   0  1   0+1
(2)   1  2   1+2
(3)   3  3   3+3
(4)   6  4   6+4
(5)  10  5  10+5

1)変数 e の値は 1 になるので、式 acc+e は 0+1 となり、その値 1 が変数 acc に設定されます。
2)変数 e の値は 2 になるので、式 acc+e は 1+2 となり、その値 3 が変数 acc に設定されます。
3)変数 e の値は 3 になるので、式 acc+e は 3+3 となり、その値 6 が変数 acc に設定されます。
4)変数 e の値は 4 になるので、式 acc+e は 6+4 となり、その値 10 が変数 acc に設定されます。
5)変数 e の値は 5 になるので、式 acc+e は 10+5 となり、その値 15 が変数 acc に設定されます。
これは、式 (((((0)+1)+2)+3)+4)+5 を評価したのと同じ結果になります。こうして、総和 15 が得られます。