Pythonでクラスメソッド、スタティックメソッドを用いたリストから最大値と最小値を見つける(アルゴリズム)プログラムを作ってみます。
■今回の環境(Python)
Google Colaboratory(Google Colab),2023年3月18日時点ではPython 3.9.16が用いられる。
■クラスメソッド、スタティックメソッドを用いたリストから最大値と最小値を見つけるプログラムの作成
では、早速クラスメソッド、スタティックメソッドを用いたリストから最大値と最小値を見つけるプログラムの作成をするために、コードを書いていきます。
■コード
class MinMax: @classmethod def find_min_max(cls, lst): min_val = float('inf') max_val = float('-inf') for val in lst: if val < min_val: min_val = val if val > max_val: max_val = val return min_val, max_val @staticmethod def print_result(min_val, max_val): print(f"最小値: {min_val}") print(f"最大値: {max_val}") # テスト用のリスト lst = [3, 5, 2, 8, 1, 9, 4, 6, 7] # MinMaxクラスのfind_min_maxメソッドを呼び出し min_val, max_val = MinMax.find_min_max(lst) # MinMaxクラスのprint_resultスタティックメソッドを呼び出し MinMax.print_result(min_val, max_val)
MinMaxというオブジェクトを作成するためのテンプレート(設計図)であるクラスを定義します。定義後、クラス内にクラスメソッドを定義するデコレーターである”@classmethod”を記述します。今回のクラスメソッドは、def文を用いてfind_min_max()というメソッドを定義します。括弧内には第1引数,パラメータとしてクラス自体を表す「cls」を設定します。第2引数,パラメータは、テスト用のリストを受け渡すため「lst」を設定します。設定後、メソッドが呼び出された時の処理を記述します。処理はmin_valという変数を定義し、その中でfloat(‘inf’)を用いて浮動小数点数で表現可能な最大値を初期値として設定します。次にmax_valという変数を定義し、その中でfloat(‘-inf’)は浮動小数点数で表現可能な最小値を初期値として設定します。これで最初のmin_valとmax_valの初期値を十分に大きい値と小さい値に設定することで、あらゆる数値と比較して更新されることが保証。次にfor文を用いてlstで受け取ったリスト内の数値を順番にval変数に格納していきます。この時にif文を用いて比較演算”<,>”を用いてval変数内の数値と比較して振り分けます。振り分けたあと、それぞれmin_valとmax_valのいずれに格納されます。格納後、returnとしてmin_valとmax_valを返すという処理になります。
メソッドを定義後、今後はスタティックメソッドを定義するためのデコレーターである”@staticmethod”を用います。def文を用いてprint_result()というメソッドを定義します。括弧内には、第1,第2の引数,パラメータとしてmin_valとmax_valを設定します。このメソッドが呼び出された時の処理として、print()で文字列とmin_valとmax_val内の値を出力するという処理になります。
その後、lstという変数を定義し、その中に角括弧”[ ]”を用いて数値を格納します。格納後、min_val, max_val内で、作成したクラスであるMinMaxに対して(.)ドット演算子を用いてfind_min_max()を呼び出します。この時に括弧内に引数,パラメータとしてlstを渡します。最後にMinMaxに対して(.)ドット演算子を用いてprint_result()を呼び出します。括弧内には第1,第2の引数,パラメータとしてmin_val, max_valをそれぞれ渡します。これでリスト内の最小値と最大値が出力されます。
■実行・検証
このコード(セル)を保存し、Google Colaboratory上で、セルを実行してみます。
実行してみると、クラスメソッド、スタティックメソッド、アルゴリズムを用いてリストから最大値と最小値を見つ、それぞれの値をprint()で出力させることができました。
コメント