総乗の計算が1行でできる

Pythonに総和を計算する関数はあるが、総乗を計算する関数はないので自作する。

# Python 3.1
import functools
import operator

Π = functools.partial(functools.reduce, operator.mul)
print(Π([3, 5, 7, 11]))  # 1155
print(Π([3, 5, 7, 11, 13]))  # 15015

Python2ではビルトイン関数だったreduce()がモジュール関数に降格してて吹いた。いまいち使いにくい関数だったのでしょうがないか。

operator.muloperator.addに置き換えると総和になる。つまりsum()ね。こんな感じで、Pythonがグルー言語であることを最近実感している。