強弱と高低

Python3をメインに

reduceというメソッド

functools.reduce(function, iterable[, initializer])
これが優秀なのではないかと思う。

説明文を引用すると

2 引数の function を iterable の要素に対して左から右に累積的に適用し、イテラブルを単一の値に縮約します。左引数 x は累計の値で、右引数 y は iterable から取り出した更新値です。オプションの initializer が存在する場合、計算の際にイテラブルの先頭に置かれ、またイテラブルが空の場合のデフォルトになります。initializer が与えられておらず、iterable が単一の要素しか持っていない場合、最初の要素が返されます。(http://docs.python.jp/3/library/functools.html#functools.reduce)

例えばでラムダ式が挙がっていて読めなかったので学んだが、

reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) は ((((1+2)+3)+4)+5)

これはoperatormulを使うと、

functools.reduce(mul,[1,2,3,4,5])

と書ける。

どちらにせよ、reduceによって、今まで

for i in a:
  ans+= i

for i in a:
  ans += func(i)

と書いていたものが省けるということだ、と推測している。使いこなしたい。。。