Python max() 5つの使い方

Python max()組み込み関数は、最も大きな値を見つける作業を簡単に処理できます。この投稿では、max()関数の基本的な使い方から、さまざまな活用方法を説明し、注意点も一緒に取り上げます。

Python max()関数とは?

max()関数は、リスト、タプルなどの反復可能な(iterable)データから最も大きな値を見つける関数です。つまり、複数の値の中で最も大きな値を簡単に求めることができます。基本的な使い方は以下の通りです。

Python
max(1, 3, 2)

上記のコードでは、1、3、2という数値の中で最も大きい値である3が返されます。

max()関数の基本使い方

リストやタプルで使用

リストのようなデータ構造でmax()を使用すると、そのリスト内で最も大きな値が返されます。

Python
numbers = [3, 4, 1, 9, 6]
print(max(numbers))

この例では、numbersというリストの中で最も大きい値である9が返されます。

複数の引数を直接渡す

max()関数は複数の引数を直接渡して処理することもできます。

Python
print(max(3, 5, 7))

複数の引数を直接入力した場合でも、最も大きな値が返されます。この場合もリストやタプルを使用するのと同じように簡単に大きい値である7を見つけることができます。

文字列でのmax()

Pythonのmax()関数は数値だけでなく、文字列にも使用できます。この場合、文字列の各文字のUnicode値に基づいて最も大きな値が決まります。たとえば、文字列内で最も大きな文字を求めるコードは以下の通りです。

Python
print(max("hello"))

ここでは、Unicode値が最も大きな文字である’o’が返されます。

図1. Python max()関数で文字列内で最もUnicode値が大きい文字を出力
図1. Python max()関数で文字列内で最もUnicode値が大きい文字を出力

keyパラメータを利用したカスタムソート

max()関数は単に数値や文字列を比較するだけでなく、keyというパラメータを使用して、さまざまなデータ構造で望む方法で最大値を求めることができます。

例1: リスト内の辞書で特定のキー値を比較

リスト内に複数の辞書がある場合、各辞書の特定の値に基づいて最も大きな値を求めることができます。

Python
students = [
    {"name": "John", "score": 75},
    {"name": "Emily", "score": 85},
    {"name": "Anna", "score": 90}
]

top_student = max(students, key=lambda student: student["score"])
print(top_student)

上記のコードでは、studentsというリスト内でスコア(score)を基準に最も高いスコアを持つ学生を見つけ出します。

図2. Python max()関数で辞書から特定の値を基準に探索
図2. Python max()関数で辞書から特定の値を基準に探索

例2: 文字列の長さを比較

文字列の長さを基準にして最も長い文字列を求めることもできます。

Python
words = ["apple", "banana", "cherry", "blueberry"]
longest_word = max(words, key=len)
print(longest_word)

key=lenを使用して、文字列の長さを基準に最も長い単語を見つけます。

図3. Python max()関数とlen()関数を使って最も長い単語を見つける
図3. Python max()関数とlen()関数を使って最も長い単語を見つける

max()関数の隠れた機能: defaultパラメータ

Python 3.4以降、max()関数はdefaultというパラメータを受け取ることができます。この機能はリストが空である場合に便利です。リストが空の場合、エラーが発生する可能性がありますが、これを防ぐためにデフォルト値を設定できます。

Python
empty_list = []
max_value = max(empty_list, default=0)
print(max_value)

空のリストが与えられても、エラーが発生せずデフォルト値である0が返されます。

図4. Python max()関数のデフォルト値パラメータ
図4. Python max()関数のデフォルト値パラメータ

max()使用時の注意事項

比較可能な値のみを使用する

max()関数は、同じ型の値のみ比較できます。もし数値と文字列を一緒に比較しようとすると、エラーが発生します。

Python
print(max(3, "apple"))

次のように「TypeError: ‘>’ not supported between instances of ‘str’ and ‘int’」というエラーメッセージを通じて、異なる型は比較できないことがわかります。

図5. Python max()関数で比較できない値を比較すると発生するTypeError
図5. Python max()関数で比較できない値を比較すると発生するTypeError

keyパラメータ使用時は正しい基準を設定する

keyパラメータを使用する際は、適切な基準を設定する必要があります。たとえば、リスト内に複数の要素がある場合、keyに明確な基準を適用しないと予期しない結果が出ることがあります。

defaultパラメータを必ずしも使用する必要はない

基本的にmax()関数は、空のシーケンスに対してエラーを発生させるため、空のリストやタプルが予想されない場合、defaultパラメータを必ず使用する必要はありません。

まとめ

Pythonのmax()関数は、最も大きな値を簡単に求めることができる非常に便利な関数です。数値や文字列だけでなく、keyパラメータを活用してさまざまなデータ構造でもカスタムソート基準を適用できます。また、defaultパラメータを使用すれば、空のリストで発生するエラーを防ぐことができます。

コードを作成する際、max()関数を適切に活用すれば、無駄な繰り返し作業を減らし、簡潔で効率的なコードを作成することができます。さまざまなシチュエーションでmax()を活用して、より良いコードを作成してみてください!

リファレンス

関連ポスト

コメントする