・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2024年02月27日に投稿されました。)
PythonでList(リスト)の最大値を取得するにはmax()を使用します。
max()とは、オブジェクトの最大値を取得する関数になります。
オブジェクトの最大値を取得するため、List(リスト)に対してmax()を使用すると、リスト内の最大の要素を返します。
そして、max()は1次元List(リスト)だけでなく、2次元List(リスト)や3次元List(リスト)のような多次元リストから最大の要素を返すことも可能です。
またパラメータを追加することで最大の基準を変更することができるためもし、List(リスト)の最大数を取得したいと思った場合はmax()を使用するようにしましょう。
今回はPythonのmax()でList(リスト)の最大値の要素を取得する方法について紹介していきます。
List(リスト)の最大値の要素を取得したい場合
max()とは
max()とは、オブジェクトから最大値のデータを取得する関数となります。
そのため、List(リスト)に対して使用することで、リストから最長値の要素を取得するようになります。
max()の書き方
max()の書き方は下記のようになります。
1 | max(オブジェクト, [key= 基準のキー]) |
max()の括弧に必須のパラメータを指定することで使用できます。
また、任意なパラメータを追加して指定することでも使用可能です。
max()のパラメータ
max()のパラメータは下記のようになります。
- オブジェクト:(必須)
最大値を取得したいオブジェクトを指定する - key= 基準のキー:(任意)
最大値の基準のキーを関数で指定する
max()は必須なパラメータとして「オブジェクト」を指定し、任意なパラメータとして「key= 基準のキー」を指定します。
そのため、最大で2つのパラメータを指定して使用します。
max()の返り値
max()の返り値はオブジェクト内にある最大の値となります。
max()でList(リスト)から最大値の要素を取得するサンプルコード
max()でList(リスト)から最大値の要素を取得するサンプルコードをご紹介します。
ここでは下記の4ケースでmax()を使用します。
- List(リスト)に要素が存在する場合
- List(リスト)に要素が存在しない場合
- List(リスト)に最大値の要素が複数存在する場合
- List(リスト)に最大値の要素が大文字と小文字で存在する場合
List(リスト)に要素が存在する場合
List(リスト)に要素が存在する場合にmax()を使用すると、List(リスト)内から最大値の要素を取得します。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2] print(list1) print("● max()使用後-1") list1_max = max(list1) print(list1_max) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● max()使用後-2") list2_max = max(list2) print(list2_max) |
実行結果
max()でList(リスト)から最大値を取得しています。
そのため、リストの中の最大値である「968」と「Python」が表示されています。
文字列の場合、max()は先頭文字が遅い文字列を最大値として取得するようになります。
List(リスト)に要素が存在しない場合
List(リスト)に要素が存在しない場合にmax()を使用すると、エラーが発生します。
● main.py
1 2 3 4 5 6 7 | print('● 対象のリスト') list1 = [] print(list1) print("● max()使用後") list1_lmax = max(list1) print(list1_max) |
実行結果
max()でList(リスト)から最大値の要素を取得しています。
今回はList(リスト)が空であるため、最大値を取得できずエラーが発生しています。
List(リスト)に最大値の要素が複数存在する場合
List(リスト)に最大値の要素が複数存在する場合にmax()を使用すると、List(リスト)内から最大値の要素を取得するようになります。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2, 2] print(list1) print("● max()使用後-1") list1_max = max(list1) print(list1_max) print('● 対象のリスト-2') list2 = ['JavaScript', 'python', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● max()使用後-2") list2_max = max(list2) print(list2_max) |
実行結果
max()でList(リスト)から最大値の要素を取得しています。
そのため、リストの中の最大値である「968」と「Python」が表示されています。
List(リスト)に最大値の要素が大文字と小文字で存在する場合
List(リスト)に最大値の要素が大文字と小文字で存在する場合にmax()を使用すると、List(リスト)内の最初に格納された要素を取得するようになります。
● main.py
1 2 3 4 5 6 7 | print('● 対象のリスト') list1 = ['JavaScript', 'python', 'PHP', 'Python', 'C#', 'Java'] print(list1) print("● max()使用後") list2_max = max(list1) print(list2_max) |
実行結果
max()でList(リスト)から最大値の要素を取得しています。
リスト内には最大値である「python」と「PYTHON」が格納されていますが、
要素のインデックスが小さい「python」表示されています。
max()で多次元List(リスト)から最大値の要素を取得するサンプルコード
max()は1次元List(リスト)だけでなく多次元List(リスト)にも使用することができます。
そのため、ここではmax()で多次元List(リスト)から最大値の要素を取得するサンプルコードをご紹介します。
2次元List(リスト)の場合
2次元List(リスト)の場合にmax()を使用します。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | print('● 対象の2次元リスト') list1 = [ [1, 2, 3, 4, 5], [10, 20, 30, 40, 50], [100, 200, 300, 400, 500, 9999], [1000, 2000, 3000, 4000, 5000] ] print(list1) print('● max()使用後(各1次元リスト)') for list1_n in list1: list1_n_max = max(list1_n) print(list1_n_max) print('● max()使用後(2次元リスト)') list1_max = max(list1) print(list1_max) print('● max()使用後(リスト全体)') max_list1=[] for list1_n in list1: list1_n_max = max(list1_n) max_list1.append(list1_n_max) print(max(max_list1)) |
実行結果
max()で2次元List(リスト)から最大値の要素を取得しています。
そのため、下記のように最大値の要素が表示されています。
- 各1次元List(リスト)の最大値 → 「5」、「50」、「500」、「5000」
- 2次元List(リスト)の最大値 → 「[1000, 2000, 3000, 4000, 5000, 0]」
- List(リスト)全体の最大値 → 「5000」
3次元List(リスト)の場合
3次元List(リスト)の場合にmax()を使用します。
● main.py
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 28 | print('● 対象の3次元リスト') list1 = [ [[10, 20, 30, 40, 50, 99999],[100, 200, 300, 400, 500]], [[1000, 2000, 3000,4000, 5000],[10000, 20000, 30000, 40000, 50000]] ] print(list1) print('● max()使用後(各1次元リスト)') for list1_n in list1: for list1_nm in list1_n: list1_nm_max = max(list1_nm) print(list1_nm_max) print('● max()使用後(各2次元リスト)') for list1_n in list1: list1_n_max = max(list1_n) print(list1_n_max) print('● max()使用後(3次元リスト)') print(max(list1)) max_list1 = [] print('● max()使用後(リスト全体)') for list1_n in list1: for list1_nm in list1_n: list1_nm_max = max(list1_nm) max_list1.append(list1_nm_max) print(max(max_list1)) |
実行結果
max()で3次元List(リスト)から最大値の要素を取得しています。
そのため、下記のように最大値の要素が表示されています。
- 各1次元List(リスト)の最大値 → 「99999」、「500」、「5000」、「50000」
- 2次元List(リスト)の最大値 → 「[100, 200, 300, 400, 500]」、「[10000, 20000, 30000, 40000, 50000]
- 3次元List(リスト)の最大値 → 「[[1000, 2000, 3000,4000, 5000],[10000, 20000, 30000, 40000, 50000]]」
- List(リスト)全体の最大値 → 「99999」
max()で最大の基準を変更してList(リスト)から最大値の要素を取得する場合
max()で最大の基準を変更してList(リスト)から最大値を取得するには、パラメータに「基準のキー」を指定します。
基準のキーを指定することで、何を最大とするのかの基準を変更することができます。
そのためここでは、max()の最大の基準を5パターン変更してList(リスト)から最大値の要素を取得します。
- 最大の基準をASCIIコードに設定する場合
- 最大の基準をバイト数に設定する場合
- 最大の基準を2進数に設定する場合
- 最大の基準16進数に設定する場合
- 最大の基準を文字数に設定する場合
最大の基準をASCIIコードに設定する場合
最大の基準をASCIIコードに設定するには基準のキーに「ascii」を指定します。
基準のキーに「ascii」を指定することで、ASCIIコードが1番大きい文字列を取得します。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | print('● 対象のリスト-1') list1 = [1975, 346, 678, 968, 258, 2] print(list1) print("● max()使用後-1") list1_max = max(list1, key=ascii) print(list1_max) print('● 対象のリスト-2') list2 = ['JavaScript', 'C#', 'PHP', 'Python', 'Java'] print(list2) print("● max()使用後-2") list2_max = max(list2, key=ascii) print(list2_max) |
実行結果
max()の最大値の基準を変更してList(リスト)から最大値の要素を取得しています。
今回はアスキーコードを最大の基準に設定しているため、「1975」と「Python」が表示されています。
最大の基準をバイト数に設定する場合
最大の基準をバイト数に設定するには基準のキーに「bytes」を指定します。
基準のキーに「bytes」を指定することで、バイト数が1番大きい文字列を取得します。
● main.py
1 2 3 4 5 6 7 | print('● 対象のリスト') list1 = [1975, 346, 678, 968, 258, 2] print(list1) print("● max()使用後") list1_max = max(list1, key=bytes) print(list1_max) |
実行結果
max()でList(リスト)から最大値の要素を取得しています。
今回はバイト数を最大の基準に設定しているため、「1975」が表示されています。
最大の基準を2進数に設定する場合
最大の基準を2進数に設定するには基準のキーに「bin」を指定します。
基準のキーに「bin」を指定することで、2進数が1番大きい文字列を取得します。
● main.py
1 2 3 4 5 6 7 | print('● 対象のリスト-1') list1 = [1975, 346, 678, 968, 258, 2] print(list1) print("● max()使用後-1") list1_max = max(list1, key=bin) print(list1_max) |
実行結果
max()でList(リスト)から最大値の要素を取得しています。
今回は2進数を最大の基準に設定しているため、「1975」が表示されています。
最大の基準16進数に設定する場合
最大の基準を16進数に設定するには基準のキーに「hex」を指定します。
基準のキーに「hex」を指定することで、16進数が1番大きい文字列を取得します。
● main.py
1 2 3 4 5 6 7 | print('● 対象のリスト-1') list1 = [1975, 346, 678, 968, 258, 2] print(list1) print("● max()使用後-1") list1_max = max(list1, key=hex) print(list1_max) |
実行結果
max()でList(リスト)から最大値の要素を取得しています。
今回は16進数を最大の基準に設定しているため、「1975」が表示されています。
最大の基準を文字数に設定する場合
最大の基準を文字数に設定するには基準のキーに「len」を指定します。
基準のキーに「len」を指定することで、文字列が1番長い文字列を取得します。
● main.py
1 2 3 4 5 6 7 | print('● 対象のリスト') list1 = ['JavaScript', 'Swift', 'PHP', 'Python', 'Java'] print(list1) print("● max()使用後") list1_max = max(list1, key=len) print(list1_max) |
実行結果
max()でList(リスト)から最大値の要素を取得しています。
今回は文字の長さを最大の基準に設定しているため、「JavaScript」が表示されています。
max()を使用した実際のケース
max()を使用した実際のケースについてご紹介します。
例えば、max()を使用して東京の1週間の気温で一番高い日付にアクセントをつけるようなコードを作成します。
● index.html
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <!DOCTYPE html> <html lang="ja"> <head> <title>max()でList(リスト)の最大値を取得する</title> <meta charset="utf-8"/> </head> <body> <h1>東京の気温</h1> <table border="1"> <thead> <tr> <th>日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th>土</th> </tr> </thead> <tbody> <tr> {% for date, temp in lists: %} <td class ="{{ temp }}">{{ date }} <p>{{ temp }}</p> </td> {% endfor %} </tr> </tbody> </table> <form action="/" method="POST"> <div> <input type="radio" id="lowest" name="most" value="1" checked> <label>最高</label> </div> <div> <input type="radio" id="best" name="most" value="2"> <label>最低</label> </div> <button type="submit">結果</button> </form> </body> </html> |
● result.html
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <!DOCTYPE html> <html lang="ja"> <head> <title>max()でList(リスト)の最大値を取得する</title> <meta charset="utf-8"/> </head> <body> <h1>東京の気温</h1> <table border="1"> <thead> <tr> <th>日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th>土</th> </tr> </thead> <tbody> <tr> {% for date, temp in lists: %} <td id ="{{ temp }}">{{ date }} <p>{{ temp }}</p> </td> {% endfor %} </tr> </tbody> </table> </body> <style> .maxVal { font-weight:bold; background: tomato; } </style> <script> window.addEventListener('load', function() { let max_temp = document.getElementById('{{ temp_ret }}') max_temp.classList.add('maxVal') }) </script> </html> |
● main.py
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 28 29 30 31 32 33 34 35 36 37 38 | from flask import Flask, render_template, request import requests import json app = Flask(__name__) API_URL = f'https://api.open-meteo.com/v1/forecast?latitude=35.6785&longitude=139.6823&daily=temperature_2m_max&timezone=Asia%2FTokyo' headers = {"content-type": "application/json"} response = requests.get(API_URL, headers=headers) data = response.json() hourly = data['daily'] date_list = hourly['time'] temp_list = hourly['temperature_2m_max'] @app.route('/') def index(): return render_template('index.html', lists = zip(date_list, temp_list)) @app.route('/', methods=['POST']) def result(): most_val = request.form.get('most') temp = '' if most_val == '1': temp_max = max(temp_list) temp = temp_max else: temp_min = max(temp_list) temp = temp_min return render_template('result.html', lists = zip(date_list, temp_list), temp_ret = str(temp)) if __name__ == '__main__': app.run() |
実行結果
max()で東京の1週間の最高気温の日付にアクセントをつけています。
今回は、下記のような流れで処理を行っています。
- PythonでAPIを呼び出し、直近の東京の各日付の気温情報の表を作成
- 各気温をList(リスト)に追加し、max()でリスト内の最大値の要素を取得
- JavaScriptのgetElementByID()で最高気温の要素をID名(最大値の要素)で取得し、対象要素のスタイルを変更
そのため、「最高」を選択し、「結果」ボタンをクリックすると最高気温「16.2度」である「2024-03-01」の背景色が変更されています。
また、今回使用したJavaScriptのgetElementByID()について詳しく知りたい場合は下記の記事をご参考ください。
Numpyを使用してList(リスト)から最大値の要素を取得する場合
Pyhtonはmax()以外にもNumpyを使用してList(リスト)から最大値の要素を取得することができます。
Numpyとは数値の計算を効率的に行うためのPythonの拡張モジュールとなります。
拡張モジュールであるため、コード上にインポートすることでNumpyに準備されている関数を使用することができます。
そのため、ここではNumpyにある下記の関数を使用してList(リスト)から最大値の要素を取得します。
- Numpy.max()
- Numpy.nanmax()
Numpy.max()
Numpy.max()とは、オブジェクトの最大値を取得する関数になります。
今回ご紹介しているmax()と変わりはありませんが、List(リスト)に非数が含まれる場合は非数を最大値として取得します。
また、パラメータ追加することで違う形で最大値を取得することができるようになります。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import numpy as np print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2, np.nan] print(list1) print("● Numpy.max()使用後-1") list1_max = np.max(list1) print(list1_max) print('● 対象のリスト-2') list2 = [[-10, -9, -8, -7, -6,], [0, 1, 2, 3, 4], [10, 11, 12, 13, 14]] print(list2) print("● Numpy.max()使用後-2-1") list2_max_1 = np.max(list2) print(list2_max_1) print("● Numpy.max()使用後-2-2") list2_max_2 = np.max(list2, axis=1) print(list2_max_2) |
実行結果
Numpy.max()でList(リスト)から最大値の要素を取得しています。
そのため、1次元List(リスト)では「nan」が最大値として表示されています。
また、2次元List(リスト)の最大値である「14」と各1次元リストの最大値である「[-6 4 14]」がまとめて表示されています。
Numpy.nanmax()
Numpyのnanmax()とは、オブジェクトの最大値を取得する関数になります。
こちらも最大値を取得するのはmax()と変わりはありませんが、非数を含むList(リスト)に対して使用する場合は非数を無視して最大値を取得します。
また、パラメータ追加することで違う形で最大値を取得することができるようになります。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import numpy as np print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2, np.nan] print(list1) print("● Numpy.nanmax()使用後") print(np.nanmax(list1)) print('● 対象のリスト-2') list2 = [[-10, -9, -8, -7, -6,], [0, 1, 2, 3, 4], [10, 11, 12, 13, 14]] print(list2) print("● Numpy.nanmax()使用後-2-1") list2_max_1 = np.nanmax(list2) print(list2_max_1) print("● Numpy.nanmax()使用後-2-2") list2_max_2 = np.nanmax(list2, axis=1) print(list2_max_2) |
実行結果
Numpy.nanmax()でList(リスト)から最大値の要素を取得しています。
そのため、1次元List(リスト)では「968」が最大値として表示されています。
また、2次元List(リスト)の最大値である「14」と各1次元リストの最大値である「[-6 4 14]」がまとめて表示されています。
max()を文字列に対して使用する場合
max()を文字列に対して使用することで、文字列から文字コードが一番大きい文字を取得するようになります。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | print('● 対象の文字列-1') text1 = 'Python' print(text1) print("● max()使用後-1") text1_max = max(text1) print(text1_max) print('● 対象の文字列-2') text1 = '最大値を取得' print(text1) print("● max()使用後-2") text1_max = max(text1) print(text1_max) |
実行結果
max()で文字列から最大値の文字を取得しています。
そのため、文字コードの最大値である「y」と「最」が表示されています。
List(リスト)から最小値の要素を取得する場合
List(リスト)から最小値を取得するにはmin()を使用します。
max()とはオブジェクトの中から最小値を取得する関数となります。
そのため、今回ご紹介しているmax()とは反対の関数になります。
● main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | print('● 対象のリスト-1') list1 = [175, 346, 678, 968, 258, 2] print(list1) print("● min()使用後-1") list1_min = min(list1) print(list1_min) print('● 対象のリスト-2') list2 = ['JavaScript', 'PHP', 'Python', 'C#', 'Java'] print(list2) print("● min()使用後-2") list2_max = min(list2) print(list2_min) |
実行結果
min()でList(リスト)から最小値を取得しています。
そのため、List(リスト)の最小値である「2」と「C#」が表示されています。
もし、min()について詳しく知りたい場合は下記の記事をご参考ください。
まとめ
● max()とは、オブジェクトから最大値を取得する関数である。
● max()は、下記のパラメータを指定して使用する。
・オブジェクト:(必須)
・key= { 基準のキー }:(任意)
● List(リスト)に要素が存在する場合にmax()を使用すると、リスト内の最大値の要素を返す。
● List(リスト)に要素が存在しない場合にmax()を使用すると、エラーが発生する。
● List(リスト)に最大値の要素が複数存在する場合にmax()を使用すると、最大値の要素を取得する。
● List(リスト)に最大値の要素が大文字と小文字で存在する場合にmax()を使用すると、インデックスが小さい方の要素を取得する。
● max()は1次元List(リスト)だけでなく、多次元のList(リスト)にも使用することができる。
● max()で最大の基準を変更してList(リスト)から最大値を取得するには、パラメータに「key= {基準のキー}」を指定する。
・基準のキーが「ascii」だとアスキーコードが基準となる
・基準のキーが「bytes」だとバイト数が基準となる
・基準のキーが「bin」だと2進数が基準となる
・基準のキーが「hex」だと16進数が基準となる
・基準のキーが「len」だと文字数が基準となる
● Numpyを使用してList(リスト)の最大値を取得するには下記の関数を使用する。
・Numpy.max()
・Numpy.nanmax()
● 文字列に対してmax()を使用すると、文字コードが一番大きい文字を取得する。
● List(リスト)から最小値を取得するにはmin()を使用する。