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さん素敵