Xion's Programming Notes

プログラミングの勉強や囲碁プログラムの開発について書いていきます。

divmodって便利だな

最近,Pythonでプログラムを書いてます.
その中で,割算をして商と余り両方使いたい,という状況がありました.
結論として,divmodという組み込み関数を使うことにしました.

実装

やってみた実装は,以下の3つ.例えば,秒の数値を分と秒に分離するとき.

1. '/' + '%'

m = val / 60
s = val % 60

2. '/' + '*' + '-'

m = val / 60
s = val - (m * 60)

3. divmod

m, s = divmod(val, 60)

速度(推測)

実際に計測したわけではないですが,除算(割算)は遅いと聞いたことがあります.
個人的には,これくらいのイメージです.(大いに間違っている可能性があります.)

'+' == '-' > '*' >> '/' == '%'

ですので,きっと,手法1よりも手法2の方が速いでしょう.

次に,手法3です.
このdivmodさんは,組み込み関数で,おそらくC言語のdivを内部で呼んでいるんだと思います.

div_t result = div(val, 60);
m = result.quot;
s = result.rem;

だから,たぶん速いです.たぶん.
気が向いたら速度計測してみます.


ちなみに,「1行で書けるという利点があるじゃないか!」というのは一応間違いです.

m, s = val /60, val % 60

って書けちゃいます.Pythonさん素敵