Pythonでリストの要素をソートして最大値と最小値を取得するクラスを実装してみます。
■今回の環境(Python)
Google Colaboratory(Google Colab),記事作成時点ではPython 3.9.16が用いられる。
■リストの要素をソートして最大値と最小値を取得するクラスの実装
では、早速リストの要素をソートして最大値と最小値を取得するクラスの実装をするために、コードを書いていきます。
■コード
class MySort: def __init__(self, lst): self.lst = lst def get_max(self): self.lst.sort() return self.lst[-1] def get_min(self): self.lst.sort() return self.lst[0] my_list = [4, 5, 3, 1, 2] my_sort = MySort(my_list)
MyClassというオブジェクトを作成するためのテンプレート(設計図)であるクラスを定義します。定義後、クラス内にdef文を用いて’__init__’と記述し、コンストラクタを使います。括弧内には、メソッドで渡される最初の引数,パラメータは、インスタンス(作成されたオブジェクト)自体でなければならないため、「self(自己)」と記述し、最初の引数として渡します。次に第2の引数,パラメータとしてlstを設定します。なお、最初の「self(自己)」という引数,パラメータを介して、「lst」というクラスのインスタンス変数が初期化されます。これでクラス内のすべてのメソッドからアクセス可能になります。この時にself(自己)に対してドット演算子( . )を用いて「lst」を指定します。
メソッドを定義後、def文を用いてget_max()というメソッドを定義します。括弧内には、第1の引数,パラメータとしてselfを設定します。selfはインスタンス自身を指す特別な変数でこれでインスタンス変数にアクセスすることができます。このメソッドが呼び出された時の処理として、self.lstに対してドット演算子( . )を用いてsort()を用います。これでlstで受け取ったリストの要素をソートすることができます。ソート後、returnでPythonのスライス表記”[ ]”を用いて「−1」とし、リストの最後の要素を参照し返すという処理になります。
次に、def文を用いてget_min()というメソッドを定義します。括弧内には、第1の引数,パラメータとしてselfを設定します。selfはインスタンス自身を指す特別な変数でこれでインスタンス変数にアクセスすることができます。このメソッドが呼び出された時の処理として、self.lstに対してドット演算子( . )を用いてsort()を用います。これでlstで受け取ったリストの要素をソートすることができます。ソート後、returnでPythonのスライス表記”[ ]”を用いて「0」とし、リストの最初の要素を参照し返すという処理になります。
メソッドを定義後、角括弧”[ ]”を用いてmy_listというリストを定義し、数値を格納したものを渡します。格納後、my_sortという変数を定義し、その中にMySort()を格納し、インスタンス化を行います。インスタンス化によりオブジェクトが作成されたことで、クラス内にアクセスできるようになりました。なお、括弧内には引数,パラメータとしてmy_listを渡します。
■実行・検証
このコード(セル)を保存し、Google Colaboratory上で、セルを実行してみます。
■リストの中で最大の値を取得する
result = my_sort.get_max() print(result)
まずは上記の記述したコードに、result変数を定義し、その中で作成したオブジェクトであるmy_sortに対してドット演算子( . )を用いてget_max()を呼び出します。その後、メソッドの処理が返されresult変数に格納されます。格納された後、print()でresult変数内の情報を出力するというコードを追加し、実行する。
実行すると、今回は「4, 5, 3, 1, 2」という数値がリスト内に収められているので、最大の値である「5」が出力されました。
■リストの中で最小の値を取得する
result = my_sort.get_min() print(result)
次に先ほどのコードを削除し、新たにresult変数を定義し、その中で作成したオブジェクトであるmy_sortに対してドット演算子( . )を用いてget_min()を呼び出します。その後、メソッドの処理が返されresult変数に格納されます。格納された後、print()でresult変数内の情報を出力するというコードを追加し、実行する。
実行してみると、リスト内には「4, 5, 3, 1, 2」という数値が収められているので、最小の値である「1」が出力されました。
コメント