今回は、Pythonでmax関数やmin関数などの組み込み関数を利用しないで、リストの最大値や最小値、平均値、中央値、最頻値を求める方法を記述していきます。初心者向けの内容です。
下の記事では、組み込み関数を利用してこれらの値を求める方法を記述していますのでよろしければ参考にしてみてください。
今回の記事では、組み込み関数を用いないで最大値などを求めていますが、確実に値を求められるかつ、高速に処理ができるので組み込み関数は積極的に利用していきましょう。
考え方はプログラムの組み方を参考にしていただけると幸いです。
参考:Pythonで最大値・最小値・平均値・中央値・最頻値を求める方法
無料オンライン相談を活用しよう!
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。
コンテンツ
max関数を使わずに最大値を求める
考え方は、リストのすべての要素を比較して、より大きい値を保存しておく手法です。
変数「max」にリストの最初の先頭要素の値を代入し、それ以降の要素を「max」と順番に比べて最大値を求めていきます。
1 2 3 4 5 6 7 8 9 10 |
mylist = [1, 1, 3, 5, 7] max = mylist[0] for i in range(1, len(mylist)): if mylist[i] > max: max = mylist[i] print(max) # 7 |
min関数を使わずに最小値を求める
最小値を求めるには、最大値を求めることの反対のことをしていきます。
具体的には、「if」文の中の不等号をひっくり返すだけです。
1 2 3 4 5 6 7 8 9 10 |
mylist = [1, 1, 3, 5, 7] min = mylist[0] for i in range(1, len(mylist)): if mylist[i] < min: min = mylist[i] print(min) # 1 |
最大値と最小値の違いは不等号の向きだけだね!
sum関数を使わずに平均値を求める
変数「sum」に初期値として、0を代入します。その後、「sum」に要素の値を順番に加算していきます。この処理によって、リスト内の合計を求めることができます。
その後、平均を求めるに、リストの要素数が必要なので組み込み関数の一つである「len」関数を利用します。(len関数は組み込み関数ですが許してください。)
1 2 3 4 5 6 7 8 9 10 11 |
mylist = [1, 1, 3, 5, 7] # 合計を保存する変数 sum = 0 for i in mylist: sum += i # 平均 = 合計 / 要素数 print(sum / len(mylist)) # 3.4 |
median関数を使わずに中央値を求める
「median」関数は、「statistics」モジュールにあるライブラリです。ちなみに、「statistics」とは、統計という意味です。
中央値を求めるには、要素数が奇数か偶数で変わってきます。
- 奇数:昇順(降順)にソートした要素の真ん中の値
- 偶数:昇順(降順)にソートした要素の真ん中の前後の値の平均
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
mylist = [1, 1, 3, 7, 5] mylist.sort() print(mylist) # [1, 1, 3, 5, 7] index = int(len(mylist) / 2) # 奇数の時 if len(mylist) % 2 == 1: print(mylist[index]) # 3 # 偶数の時 else: print((mylist[index - 1] + mylist[index]) / 2) |
mode, sum関数を使わずに最頻値を求める
「mode」関数は、「statistics」モジュールにあるライブラリです。
最頻値とは、最も多く出現する値のことです。
愚直に調べる方法
最頻値を求めるには、リストの値の出現回数を数える必要があります。その後、求めた出現回数が最大となる要素を見つけます。
コードの書き方は様々だと思いますが、紹介する例は少し複雑です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
mylist = [1, 1, 3, 5, 5, 5, 7] my_dict = {} for i in mylist: # 辞書にないなら値を登録 if i not in my_dict: my_dict[i] = 1 # 登録済みならば、1回出現回数を増やす else: my_dict[i] += 1 # valueのみ取得 my_dict_list = [*my_dict.values()] print(my_dict_list) # [2, 1, 3, 1] # 出現回数の最大値を求める max = my_dict_list[0] for i in range(1, len(my_dict_list)): if max < my_dict_list[i]: max = my_dict_list[i] num = [k for k, v in my_dict.items() if v == max] # リストのアンパック print(*num) # 5 |
関連:【Python入門】初めてのプログラミング(リストのアンパック)
count関数を利用する方法
「count」関数を利用すると、リスト内での数を簡単に求めることが出来ます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
mylist = [1, 1, 3, 5, 5, 5, 7] # 出現回数 max = 0 for i in mylist: num = mylist.count(i) if num > max: max = num ans = i print(ans) # 5 |
まとめ
最後までお読みいただきありがとうございます。
今回は、sum関数やmax関数などの組み込み関数を利用しないで、リストの最大値や最小値、平均値、中央値、最頻値を求める方法を記述しました。
下の記事では、組み込み関数を利用してこれらの値を求めていますのでよろしければ参考にしてみてください。
参考:Pythonで最大値・最小値・平均値・中央値・最頻値を求める方法
無料の説明会を有効活用しよう!
独学での学習は孤独感を感じやすく挫折してしまう初心者も多いです。また、参考書を購入しても全く読む気にならないという方も多いはずです。
それでも、なんとかPythonの勉強を行い、高スキルなエンジニアを目指したいという方は無料で受けられるオンライン説明会に参加してみることも一つの手です。
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。
パソコン操作にお困りではありませんか?
ExcelやWordなど、基本的なソフトの使い方がいまいちわからないという方には、「PCHack」という講座をオススメしています。スクールの中でもコストパフォーマンスに優れ、オンラインなのでどこでも好きな時間に学習できます。
3万円ほどでPC初心者を脱出したい方は参考にしてください。
【PC初心者必見!】パソコンの勉強方法が分からないならPCHack講座がオススメ!