ITと雑記とド田舎と

ド田舎在住エンジニアがIT備忘録と雑記を書くブログです

AtCoder Beginner Contest 118備忘録 python3 reduce関数

先日参加した、AtCoder Beginner Contest118のC問題で最大公約数を求める問題があり、その際はじめてpython3のreduce関数について知ったので備忘録を兼ねてまとめます。

多分pythonを長く使ってる人にはとても基本的なところだと思います。

 

reduce関数

reduce関数は第1引数に関数、第2引数にリストやタプルを受け取り、リスト(タプル)すべての要素に対して第1引数に与えた関数を適用できる高階関数です。畳み込み演算が行えるのでfor文での繰り返し処理を置き換えたりできます。

 

私はC問題の解答はfor文で実装していたんですが、コンテスト後にTwitterを眺めているとreduceで簡単に書けるというつぶやきを見て調べてみました。

以下C問題での比較になります。for文版とreduce版で速度を比較してみました。速度ではfor文のほうが早そうですが、コードはreduceの方がすっきりしますね。臨機応変に使ってみようと思います。

 

gist6667a6189b3fcf88969c32aefb0b1f75