min_val = float('inf') # 最小値を表す変数を無限大で初期化 max_val = float('-inf') # 最大値を表す変数を負の無限大で初期化 なお「float('inf')」は浮動小数点数 float 型で無限大を表すinf、「float('-inf')」は浮動小数点数 float 型で負の無限大を表す。
リスト中の最小値と最大値を求めるために、初期値としてそれぞれ”float(‘inf’)”と”float(‘-inf’)”を使う場合があるが、「無限大」というイメージが私にはいまいち掴めなかった。無限大という概念は数学的に少し抽象的なもの。調べてみると、一般的には、無限大とは「どんなに大きな数でも、それよりも大きな数が存在する」ということを表し、負の無限大は「どんなに小さい実数値よりも小さい」ということを表す。
なので、「max_val = float(‘-inf’)」で最大値を表す変数を負の無限大で初期化する意味は、負の無限大を初期値として代入することで、どんな値と比較しても最大値として扱えるようになります。例えば、大きい数から順に比較していく場合、最初に代入する値を0とすると、比較対象が0よりも小さい場合にはうまく動作しませんが、最初に代入する値を負の無限大にすると、どんな値と比較しても最大値として扱える。また最大値を表す変数に負の無限大を初期値として代入することで、さらに新しい値を代入すると、最大値として扱える。
(※最大値を表す変数を負の無限大で初期化した場合でも、より大きな値が見つかればその値で最大値を更新することができます。ただし、初期化された値が最大値になることはない点に注意してください。後に現れる値と比較され、それらの中で最大値が選ばれる。)
「max_val = float(‘inf’)」の方も最小値を表す変数を無限大で初期化で初期化することで、今後の比較対象の値がどんな値であっても、その値よりも小さい値を最小値として扱える。例えば、小さい数から順に比較していく場合、最初に代入する値を1とすると、比較対象が1よりも小さい場合にはうまく動作しませんが、最初に代入する値を無限大にすると、どんな値と比較しても最小値として扱える。
(※最小値を表す変数を無限大で初期化した場合、より小さい値であれば更新することができる。ただし、初期化された値が最小値になることはない点に注意してください。後に現れる値と比較され、それらの中で最小値が選ばれる。)
コメント